import csv
impFileName = []
impFileName.append("file_1.csv")
impFileName.append("file_2.csv")
expFileName = "MasterFile.csv"
l = []
overWrite = False
comma = ","
for f in range(len(impFileName)):
with open(impFileName[f], "r") as impFile:
table = csv.reader(impFile, delimiter = comma)
for row in table:
data_1 = row[0]
data_2 = row[1]
data_3 = row[2]
data_4 = row[3]
data_5 = row[4]
data_6 = row[5]
dic = {"one":data_1, "two":data_2, "three":data_3, "four":data_4, "five":data_5, "six":data_6}
for i in range(len(l)):
if l[i]["one"] == data_1:
print("Data, where one = " + data_1 + " has been updated using the data from " + impFileName[f])
l[i] = dic
overWrite = True
break
if overWrite == False:
l.append(dic)
else:
overWrite = False
print(impFileName[f] + " has been added to the list 'l'")
with open(expFileName, "a") as expFile:
print("Master file now being created...")
for i in range(len(l)):
expFile.write(l[i]["one"] + comma + l[i]["two"] + comma + l[i]["three"] + comma + l[i]["four"] + comma + l[i]["five"] + comma + l[i]["six"] + "\r\n")
print("Process Complete")
このプログラムは2つ以上の.csvファイルを使用し、各行のuniqueID(data_1)を他のものと比較します。一致した場合、現在の行が更新されたバージョンであるとみなして上書きします。一致するものがなければ、それは新しいエントリです。" r n"はcsvファイルの最後で無視されます
各行のデータを辞書に格納し、それをリスト "l"に格納します。
すべてのファイルが処理されたら、リスト "l"を指定された形式で "MasterFile.csv"に出力します。
---問題点---
「File_1.csv」の最後の行と「File2.csv」の最初の行は、出力ファイルの同じ行になります。私はそれを新しい行で続けたいと思います。
--visual
...
data_1,data_2,data_3,data_4,data_5,data_6
data_1,data_2,data_3,data_4,data_5,data_6DATA_1,DATA_2,DATA_3,DATA_4,DATA_5,DATA_6
DATA_1,DATA_2,DATA_3,DATA_4,DATA_5,DATA_6
...
注:.CSVファイルのいずれかにはヘッダー行がありません。
"expFile.write"の最後に "\ n"だけを使用してみました - 同じ結果
最初のファイルの最後の行に改行文字はありません。これは珍しいことではありません。あなたは手作業で挿入する必要があります –
確かに、私はそれらを "expFile.Write"行に挿入しています。 "write"の最後に "\ r \ n"( "\" n "改行)? – marmitegeek