2016-09-28 3 views
0

私は、sample.csvファイルの最初の列を取得し、temp1.csvファイルにコピーするPythonコードを持っています。ここでは、このcsvファイルと、共通の行の別のserialNumber.txtファイルを比較したいと思います。共通の行が見つかった場合は、結果ファイルに書き込む必要があります。私のtemp1.csvは正しく作成されていますが、問題は作成されている結果ファイルが空であることです。ファイルの書き込みが期待通りに機能しない

script.py

import csv 
f = open("sample.csv", "r") 
reader = csv.reader(f) 

data = open("temp1.csv", "wb") 
w = csv.writer(data) 
for row in reader: 
    my_row = [] 
    my_row.append(row[0]) 
    w.writerow(my_row) 
data.close() 

with open('temp1.csv', 'r') as file1: 
    with open('serialNumber.txt', 'r') as file2: 
     same = set(file1).intersection(file2) 
     print same 

with open('result.csv', 'w') as file_out: 
    for line in same: 
     file_out.write(line) 
     print line 

sample.csv

M11435TDS144,STB#1,Router#1 
M11543TH4292,STB#2,Router#1 
M11509TD9937,STB#3,Router#1 
M11543TH4258,STB#4,Router#1 

serialNumber.txt

G1A114042400571 
M11543TH4258 
M11251TH1230 
M11435TDS144 
M11543TH4292 
M11509TD9937 
+0

ファイルfile1とfile2をしたい、それらを追加する必要があるため、彼らは同じにすることはできませんファイルオブジェクトです。あなたは、それぞれの行を何らかのオブジェクト(セットの作品)に読み込んだ後、2つのセットの交点を取る必要があります。 – PyNEwbie

+0

'temp1.csv'を読み込む際に、' csv.reader'をプレーンなファイルとして読むのではなく、使う必要がありますか? – CAB

答えて

0
with open('temp1.csv', 'r') as file1: 
    list1 = file1.readlines() 

set1 = set(list1) 

with open('temp2.csv', 'r') as file2: 
    list2 = file2.readlines() 

set2 = set(list2) 

あなたはセットなどのコンテンツを処理することができ

元のコードは各行の後に改行を挿入しないので、それらが存在するかどうかわかりません。そうでない場合、あなたは混乱に

0

を持っていますあなたがそれらを持っているとして、それ以外の場合はおそらく、この代わりに

same = set(list(file1)).intersection(list(file2)) 
関連する問題