2024-05-19 17:02:56 发布
网友
我想将一系列dircmp report_full_disclosure()输出到一个文本文件中。但是report_full_disclosure()格式是一个文本块,它不能很好地与文件.写入(比较_object.report\u完整披露())因为文件.写入()需要一行写入文件。在
我尝试过迭代report_full_disclosure()报告,但它也不起作用。以前有其他人有过这种特殊的问题吗?是否有另一种写入文件的方法?在
在下面提到的另一个stackoerflow线程中可以找到这个问题的答案 How to redirect 'print' output to a file using python? 基于上述线程中提供的解决方案对我有用的示例:
>>> import sys >>> import filecmp >>> d = dircmp('Documents/dir1','Documents/dir2') >>> orig_stdout = sys_stdout >>> orig_stdout = sys.stdout >>> fo = open('list_of_diff.txt','a+') >>> sys.stdout = fo >>> d.report() >>> sys.stdout = orig_stdout >>> fo.close()
dircmp.filecmp的“报告生成”方法不接受file对象,它们只使用print语句(或者,在python3版本中,print()函数)
dircmp.filecmp
print
print()
您可以创建dircmp.filecmp的子类,该子类接受方法report、report_full_closure和{}(如果需要)的文件参数,在每个print ...站点写入{}。当report_*_closure递归调用时,将dest参数向下传递给递归调用。在
report
report_full_closure
print ...
report_*_closure
dest
在我看来,缺少将输出打印到特定文件的能力是一种疏忽,因此在为这些方法添加了一个可选的文件参数并对其进行了彻底测试之后,您可能希望为Python项目提供您的贡献。在
如果您的程序是单线程的,您可以临时替换系统标准输出在调用report方法之前。但是,这是一个肮脏而脆弱的方法,并且想象您的程序将永远是单线程的可能是愚蠢的。在
在下面提到的另一个stackoerflow线程中可以找到这个问题的答案 How to redirect 'print' output to a file using python? 基于上述线程中提供的解决方案对我有用的示例:
dircmp.filecmp
的“报告生成”方法不接受file对象,它们只使用print
语句(或者,在python3版本中,print()
函数)您可以创建}(如果需要)的文件参数,在每个}。当
dircmp.filecmp
的子类,该子类接受方法report
、report_full_closure
和{print ...
站点写入{report_*_closure
递归调用时,将dest
参数向下传递给递归调用。在在我看来,缺少将输出打印到特定文件的能力是一种疏忽,因此在为这些方法添加了一个可选的文件参数并对其进行了彻底测试之后,您可能希望为Python项目提供您的贡献。在
如果您的程序是单线程的,您可以临时替换系统标准输出在调用
report
方法之前。但是,这是一个肮脏而脆弱的方法,并且想象您的程序将永远是单线程的可能是愚蠢的。在相关问题 更多 >
编程相关推荐