作为更大项目的一部分,我需要根据文件的匹配和不同元素创建文件。代码示例如下:
with open('TestFile1.csv', 'r') as file_1:
with open('TestFile2.csv', 'r') as file_2:
same = set(file_1).intersection(file_2)
different = set(file_1).difference(file_2)
same.discard('\n')
with open('output_file_same.txt', 'w') as file_out_1:
for line in same:
file_out_1.write(line)
with open('output_file_different.txt', 'w') as file_out_2:
for line in different:
file_out_2.write(line)
比较相同行并将其写入文件的行运行良好,但用于返回具有不同行的文件的代码将返回空白文件。它应该返回一个包含不同行的文件。有什么建议吗
file_1
和file_2
是文件对象,这意味着它们是迭代器;迭代器可以只迭代一次,然后尝试再次迭代,但不读取任何内容。所以当你这样做的时候:它同时清空
file_1
和file_2
,因此:行为与
set([]).difference([])
大致相同。要解决此问题,请确保先将数据清除一次,然后再重新使用,例如:旁注:您不需要显式循环来写出结果
可简化为:
它运行得更快,也更简单
相关问题 更多 >
编程相关推荐