如何将python脚本cmd输出重定向到文件?
Posted
技术标签:
【中文标题】如何将python脚本cmd输出重定向到文件?【英文标题】:How to redirect python script cmd output to a file? 【发布时间】:2018-01-11 23:13:18 【问题描述】:所以我有一个将文本输出到控制台的 python 脚本,我需要将它记录到一个文件中,但是该脚本非常复杂,我不编写 python 代码,所以我宁愿不改变它。
我想这样做
>python script.py arg1 arg2 ... argn > "somefile.txt"
但它不起作用,我的猜测是python将>
和"somefile.txt"
作为参数..
这可以实现吗?如何实现?
【问题讨论】:
你的猜测是错误的。以什么方式不起作用?你看到了什么? 我在控制台看到输出,并没有创建文件。 你确定它不输出到 STDERR 吗? 您添加 CMD 标签是因为您从 Windows CMD shell 运行 Python 吗?在这种情况下,如果python script.py ... > somefile.txt 2>&1
不起作用,那么脚本将直接写入控制台而不是 stdout 或 stderr。
How to execute a python script and write output to txt file?的可能重复
【参考方案1】:
$ (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
【讨论】:
尝试了带括号的那个,文件被创建,但输出没有被重定向,文件仍然是空的。对不起,但我不明白你其余的语法。你用'$'暗示linux bash吗?因为我说的是windows命令提示符 是的,得到“'tee' is not known as an internal or external command...” @GaringGG,Windows 没有通过tee
命令分发。您可以安装一个,但无论如何您都没有问过这个问题。只需通过>somefile.txt
重定向标准输出并通过2>&1
将标准错误重定向到标准输出(即同一个文件)。
是的,抱歉,以前我的 bash 示例以 $
开头,甚至没有考虑过 Windows。如果您使用的是 Cygwin,它可能包括 tee
(不知道,已经好几年了)。【参考方案2】:
将这些代码行添加到 python 文件的开头。
import sys
sys.stdout = open('somefile.txt', 'w')
这是将 sys.stdout 设置为您选择的文件对象。
【讨论】:
【参考方案3】:由于脚本不是你的,我猜它使用了 python 日志模块。如果是这种情况,那么您只需要重新配置日志记录模块以使用标准输出。请参阅https://***.com/a/28194953/292787 了解如何操作。
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
【讨论】:
以上是关于如何将python脚本cmd输出重定向到文件?的主要内容,如果未能解决你的问题,请参考以下文章