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(ラインを 私はここにロジックで何かをねじ込むています、
'oldest'と' latestest'の値が何であるかを確認するためにトレースを追加してください。もしそれらの名前がOKであれば、 'fileone'と' filetwo'の値は何ですか?問題が依然として明白でない場合、ここにそれがあります。 –
最初のファイルを開くときに 'with'を使わないのはなぜですか?ファイルは閉じられていないので、データが正しくフラッシュされていない可能性があります。 – user694733
また、最後の 'with'ブロックを終了するときに' outFile'が既に閉じられているので、 'outFile.close()'は無意味です。 – user694733