如何将Python程序的标准输出移动到文件中?
我使用的是Python2.7,我现在使用的是Windows7,但我通常使用Linux,因此如果能为类UNIX系统提供一个答案,我将不胜感激 我知道,在许多类似UNIX的系统中,可以使用以下命令将标准输出推送到文件:如何将Python程序的标准输出移动到文件中?,python,linux,bash,batch-file,cmd,Python,Linux,Bash,Batch File,Cmd,我使用的是Python2.7,我现在使用的是Windows7,但我通常使用Linux,因此如果能为类UNIX系统提供一个答案,我将不胜感激 我知道,在许多类似UNIX的系统中,可以使用以下命令将标准输出推送到文件: hello_world.py > hello_world_output.txt 这将hello\u world.py的所有标准输出放入hello\u world\u output.txt。根据我五秒钟前刚刚尝试的,这个命令在Windows系统上的工作方式似乎相同 但是,假设我
hello_world.py > hello_world_output.txt
这将hello\u world.py
的所有标准输出放入hello\u world\u output.txt
。根据我五秒钟前刚刚尝试的,这个命令在Windows系统上的工作方式似乎相同
但是,假设我有一个包含许多Python文件的程序,我想将它们的所有标准输出推送到某个output.txt
,或log.txt
,等等。我该怎么做呢?我尝试了命令main.py>output.txt
,但这只推送main.py
的标准输出,而不是我的.py
文件的其余部分
在Linux和Windows系统中,如何将多个文件程序(包括但不限于Python程序)的标准输出推送到单个文件中?我熟悉BASH,因此我天生也对批处理文件行话有点了解
更新
上面的一行命令适用于我的Linux系统。我猜这个问题与我的程序在Windows系统上的进程管理有关。对于bash,它应该很简单,将脚本分组到一个列表中(如果单独从shell运行),然后重定向组
{…}>out.txt
$ { echo foo; echo bar; echo baz; } > out.txt
$ cat out.txt
foo
bar
baz
如果python脚本本身运行其他python脚本,那么这应该是不必要的,因为它们都应该从父python进程继承stdout
重定向
我不知道Windows是否可以做前者,或者对于后者是否也可以做相同的事情,但这可能(或者至少可能是可能的)。在python 3中可以做的一件事是打印到文件对象。例如,如果您有需要推送到文件的输出,请执行打印(args,file=f1)。此功能位于
\uuuu future\uuuu
模块中,可以导入到python 2.7中。@gjdanis谢谢,但我想使用标准输出来完成此操作。--我不想修改任何代码。我也不是说特定于Python;我也希望对其他语言执行此操作。您在main.py中运行其他文件时做了什么?@Wooble我正在导入它们并调用它们的函数,创建它们的对象,在一些文件中,我打印了一些我想放在output.txt
中的东西。我感觉他在做类似于os.system
或subprocess.Popen的事情。是的,这在我的Linux系统上运行。但是使用最初的一行命令也可以工作,所以我认为问题实际上只是我的程序在Windows上的进程管理有些愚蠢,所以standard out变得一团糟。就像我说的Windows可能没有linux那样的stdout
继承行为。因此,python运行的脚本可能看不到重定向。你是如何运行脚本的?