我正在尝试将CSV文件与主CSV文件进行比较,并附加主文件以及任何更改。当我运行该程序时,我得到了意想不到的结果。
Python代码:
import glob
import difflib
final = "Z:\\_data\\master.csv"
folder = "Z:\\_data\\"
for file in glob.glob( folder + "*sample*.csv"):
#print file
diff = difflib.ndiff(open(final).readlines(),open(file).readlines())
delta1 = ''.join(x[2:] for x in diff if x.startswith('+ '))
#print delta1
if delta1 != "":
with open(final, 'ab') as new_file:
new_file.write("\n" + delta1)
sample1.csv
id,tech,type,work_date
C-40,,,
C-33,,,
C-32,,,
sample2.csv
id,tech,type,work_date
W-37,ty,Waterous,8-12-15
W-38,ty,Dresser,8-12-15
W-5,ty,Waterous,9-1-15
C-44,tf,Waterous,xx
P-40,,,
master.csv
id,tech,type,work_date
当我第一次运行程序时,主文件如下所示:
id,tech,type,work_date
id,tech,type,work_date
C-40,,,
C-33,,,
C-32,,,
W-37,ty,Waterous,8-12-15
W-38,ty,Dresser,8-12-15
W-5,ty,Waterous,9-1-15
C-44,tf,Waterous,xx
P-40,,,
当我反复运行程序时,我得到以下内容:
id,tech,type,work_date
id,tech,type,work_date
C-40,,,
C-33,,,
C-32,,,
W-37,ty,Waterous,8-12-15
W-38,ty,Dresser,8-12-15
W-5,ty,Waterous,9-1-15
C-44,tf,Waterous,xx
P-40,,,
C-32,,,
P-40,,,
如您所见,上述结果有重复的行。
我期待结果是
id,tech,type,work_date
C-40,,,
C-33,,,
C-32,,,
W-37,ty,Waterous,8-12-15
W-38,ty,Dresser,8-12-15
W-5,ty,Waterous,9-1-15
C-44,tf,Waterous,xx
P-40,,,
答案 0 :(得分:0)
我认为您的问题可能是因为最后一行
new_file.write("\n" + delta1)
尝试删除" \ n",仅限
new_file.write(delta1)
我在Linux上尝试过您的代码。它产生了一个额外的空白行
id,tech,type,work_date
C-40,,,
C-33,,,
C-32,,,
W-37,ty,Waterous,8-12-15
W-38,ty,Dresser,8-12-15
W-5,ty,Waterous,9-1-15
C-44,tf,Waterous,xx
P-40,,,
在Windows计算机上,它可能表现不同。它'可能会造成差异。比如你比较
id,tech,type,work_date
与 ID,技术,类型,work_date \ n
在Windows上,您可能看不到额外的空行,因为Windows使用\ r \ n作为新行。