2016-10-13 14 views
-1

名前と統計情報を含む複数のファイルと特定の統計をチェックするファイルがあります。このコードがうまくいかない理由はありません

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

Example File 2 
AB 
B 
BA 
DA 
DH 

エラーは発生しませんが、新しいファイルに書き込みはしません。

私はこれを行うために使用していたコードは次のとおりです。

# 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

'if'の字下げが奇妙に見えます。あなたのコードは実際にそのように見えますか? – Michael

+2

'book_new.flush'の代わりに' book_new.flush() 'にするべきではありませんか?また、ファイルを開くときにモードを指定しないと、デフォルトで 'read'モードになります。あなたのファイルに書きたいので、 'book_new = open( 'upload.csv'、 'w')'と一緒に行かなければなりません。 'book_removals'はファイルハンドルです。この変数と比較すると、ファイルに含まれているものは見ていません。 – Efferalgan

+2

「book_candidates == book_removals」というテストでは、何を示すと思いますか? – quamrana

答えて

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) 

の.csvファイルを扱う、csvモジュールを使用しています。これにより、setFile2になり、すべての行がFile1になります。その行の値がFile2の場合、その行はoutput.csvに書き込まれます。

+0

遅延の返信をお寄せいただきありがとうございます。あなたが推測しているように、私はPythonにはかなり新しいので、私は問題の列に統計情報を設定しますか? – user3812645

+0

このコードをテストしても、ファイル1のファイル2が – user3812645

+0

であることがわかっていても、ファイルは空のouputファイルで戻ってきています。 File1を開く前に 'print(stats)'を実行し、その中にすべてがあることを確認してください。 –

関連する問題