2016-10-13 4 views
-1

Ich habe mehrere Dateien mit Namen und Statistiken und eine Datei, die nach einem bestimmten stat.Irgendwelche Ideen, warum dieser Code nicht funktioniert

Example File 1 
Eddy,23,2,4,9,AB 
Frank,46,2,4,5,DA 

Example File 2 
AB 
B 
BA 
DA 
DH 

Ich bekomme keine Fehler, aber es schreibt nicht in die neue Datei.

Der Code, den ich, dies zu tun bin mit ist:

# Open Removal file and create a set of required removals 
book_removals = open("File2.csv") 
search_removals_col = 0 

# Open the All Candidates file 
book_candidates = open('File1.csv') 
search_candidates_col = 4 

# Create a New Roster file 
book_new = open('upload.csv') 

# Iterate through candidates file, looking for removals 
for row in range(search_candidates_col): 
if book_candidates == book_removals: 
    book_new.write(row) 
    book_new.flush 
book_new.close() 
+0

Die Einrückung für das 'if' sieht ungerade aus. Sieht Ihr Code tatsächlich so aus? – Michael

+2

Sollte es nicht 'book_new.flush()' anstelle von 'book_new.flush' sein? Wenn Sie den Modus beim Öffnen der Datei nicht angeben, wird er standardmäßig als "read" -Modus angezeigt. Da Sie in Ihre Datei schreiben wollen, sollten Sie mit 'book_new = open ('upload.csv', 'w')' gehen. Und 'book_removals' ist ein Datei-Handle. Wenn Sie diese Variable vergleichen, sehen Sie nicht, was die Datei enthält. – Efferalgan

+2

Was erwarten Sie vom Test 'book_candidates == book_removals'? – quamrana

Antwort

0
import csv 
stats = set() 
with open('File2.csv') as file2: 
    for line in file2: 
     stats.add(line) 
with open('File1.csv', newline='') as file1: 
    file1_reader = csv.reader(file1) 
    with open('output.csv', 'w+', newline='') as output: 
     output_writer = csv.writer(output) 
     for line in file1_reader: 
      if any(item in stats for item in line): 
       output_writer.writerow(line) 

Wenn mit CSV-Dateien handelt, verwenden Sie das csv Modul. Dies baut eine set aus Zeilen in File2, dann geht jede Zeile in File1. Wenn diese Zeile einen Wert von File2 hat, wird diese Zeile in output.csv

geschrieben
+0

Hey Patrick Danke für die Antwort Entschuldigung für die Verzögerung. Wie du vermutet hast, bin ich ziemlich neu bei Python, also setze ich Statistiken auf die fragliche Spalte? – user3812645

+0

Okay, testete diesen Code und die Datei kommt immer noch mit output-Datei leer, obwohl ich weiß, dass meine Datei1 Einträge von file2 – user3812645

+0

Hmm hat. 'print (stats)' vor dem Öffnen von File1 und stellen Sie sicher, dass alles drin ist. –

Verwandte Themen