我有一个用Python编写的脚本,输出文本到控制台,但我需要将其记录在文件中。然而,这个脚本非常复杂,而我不会Python编程,因此不想对其进行修改。
我想要做到这一点:
>python script.py arg1 arg2 ... argn > "somefile.txt"
但这样是行不通的,我猜测 Python 把
>
和 "somefile.txt"
当作参数处理了。如何解决这个问题呢?$ (python script.py one two) > test.txt
如果你想查看输出并将其写入文件:
$ python script.py one two | tee test.txt
如果依旧无法写入文件,请尝试重定向STDERR
:
$ python script.py one two 2>&1 | tee test.txt
tee
命令。你可以安装一个,但是你并没有问这个。只需通过>somefile.txt
将stdout重定向到文件,并通过2>&1
将stderr重定向到stdout(即同一个文件)。 - Eryk Sun将以下代码添加到Python文件的开头。
import sys
sys.stdout = open('somefile.txt', 'w')
由于这个脚本不是你自己写的,所以我猜测它使用了Python的logging模块。如果是这样的话,你只需要重新配置logging模块来使用标准输出(stdout)。请参考https://dev59.com/hGYq5IYBdhLWcg3w8lNo#28194953中的方法。
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
python script.py ...> somefile.txt 2>&1
不起作用,那么脚本会直接写入控制台而不是标准输出或标准错误。 - Eryk Sun