2017-03-30 9 views
0

2つのCSVファイルを比較していますが、もう1つはすでにこのコードを実行して作成されています。基本的には、最新のシートを見て、新しい行が追加されているかどうか(列Aのみ)、diffファイルを作成し、新しく追加された行を最新のファイルからdiffファイルにコピーすることになっています。彼女のEISは、コードは、私が使用しています:最も古いファイルが= parse_file1_20170328_currentime私の出力CSVファイルがデータをコピーしていません

A 
B 
C 

と 最新のファイルを(既に存在している)

import os, csv, time, glob 

timestr = time.strftime("%Y%m%d-%H%M%S") 

f=open("B:/Test_folder/parse_file1_"+timestr+'.csv', 'w+', newline='') 
w=csv.writer(f) 
for dirs in os.listdir("B:/folder1"): 
     w.writerow([dirs]) 

newest = max(glob.iglob('B:/Test_folder/parse_file1_*.csv'), key=os.path.getctime) 
oldest = min(glob.iglob('B:/Test_folder/parse_file1_*.csv'), key=os.path.getctime) 
with open(oldest, 'r') as t1, open(newest, 'r') as t2: 
    fileone = t1.readlines() 
    filetwo = t2.readlines() 
with open('B:/Test_folder/file1_diff.csv', 'w') as outFile: 
    for line in filetwo: 
     if line not in fileone: 
      outFile.write(line) 
outFile.close() 
= parse_file2_20170329_currentime

A 
B 
C 
D 

予想される出力は次のようになります。 file1_diff

D 

私の問題は、diffファイルを作成していても、DをCSVファイルにコピーしていないことです。 filetwoでのラインの を: line.strip場合()ではないfileoneに: outFile.write(ラインを 私はここにロジックで何かをねじ込むています、

+0

'oldest'と' latestest'の値が何であるかを確認するためにトレースを追加してください。もしそれらの名前がOKであれば、 'fileone'と' filetwo'の値は何ですか?問題が依然として明白でない場合、ここにそれがあります。 –

+0

最初のファイルを開くときに 'with'を使わないのはなぜですか?ファイルは閉じられていないので、データが正しくフラッシュされていない可能性があります。 – user694733

+0

また、最後の 'with'ブロックを終了するときに' outFile'が既に閉じられているので、 'outFile.close()'は無意味です。 – user694733

答えて

0

多分空白が役立ちます取り外し

感謝を助けてください.strip())

関連する問題