我有两个文件,源文件和dest文件。我想将此源文件中的内容复制到dest文件,但不是整个内容。 仅包含源文件中的那部分而不是目标文件中的部分。
我尝试搜索并遇到了shutil模块,但我找不到任何只将内容差异从一个文件复制到另一个文件的函数。
如何在Python中执行此操作?我们有任何库函数来完成这个吗?
示例:
source.txt: dest.txt
a a
b c
c e
d f
e
完成所需的操作后,应该是:
source.txt: dest.txt
a a
b c
c e
d f
e b
d
请注意,行的顺序并不重要。
答案 0 :(得分:1)
如果您可以将文件排列为行列表,我们可以非常轻松地完成此任务。
if len(lineList1) > len(lineList2):
src = lineList1
dst = lineList2
else
src = lineList2
dst = lineList1
for x in range(len(src)):
if src[x] != dst[x]
dst[x] = scr[x]
此代码段找到最长的列表,迭代两者,如果目标上的行不相同,则会复制该列表。虽然我不确定这种方法对复制文件的好处;除了练习。
修改强>
我想我明白了。试试这个片段:
output = dst + [x for x in src if x not in dst]
这会迭代每一行,如果它不在dst
中,则会在最后添加。
答案 1 :(得分:0)
使用difflib
import difflib
file1 = "PATH OF FILE 1"
file1 = open(file1, "r")
file2 = "PATH OF FILE 2"
file2 = open(file2, "r")
diff = difflib.ndiff(file1.readlines(), file2.readlines())
file1.close()
file2.close()
delta = ''.join(x[2:] for x in diff if x.startswith('- '))
fh = open("PATH OF FILE 2", "a")
fh.write(delta)
fh.close
fh = open("PATH OF FILE 2","r")
print fh.read()
fh.close()