difflib.context_diff方法返回一个生成器,显示2个比较字符串的不同行.如何将结果(比较)写入文本文件?
在这个示例代码中,我想要从第4行到文本文件末尾的所有内容.
>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']
>>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']
>>> for line in context_diff(s1, s2, fromfile='before.py', tofile='after.py'):
... sys.stdout.write(line) # doctest: +NORMALIZE_WHITESPACE
*** before.py
--- after.py
***************
*** 1,4 ****
! bacon
! eggs
! ham
guido
--- 1,4 ----
! python
! eggy
! hamster
guido
Run Code Online (Sandbox Code Playgroud)
提前致谢!
with open(..., "w") as output:
diff = context_diff(...)
output.writelines(diff)
Run Code Online (Sandbox Code Playgroud)
查看文档的file.writelines().
说明:
with是一个上下文管理器:它在你完成时处理关闭文件.这不是必要的,但这是一种很好的做法 - 你也可以做到
output = open(..., "w")
Run Code Online (Sandbox Code Playgroud)
然后调用output.close()或让Python为你做(当output内存管理器收集时).
这"w"意味着您在写入模式下打开文件,而不是"r"(读取,默认值).您可以在这里+添加各种其他选项(对于附加,b对于二进制iirc).
writelines获取任何可迭代的字符串并将它们一次一个地写入文件对象.这是相同for line in diff: output.write(line)但更整洁,因为迭代是隐含的.