定时和重定向子过程:PIPE输出到文件

时间:2018-09-03 08:23:02

标签: python linux subprocess stdout timing

我正在尝试执行bash,并希望将shell上的输出重定向到文件

这是我到目前为止所拥有的

baby = subprocess.Popen('some command', stdout = subprocess.PIPE, shell = True)
print (baby.stdout.readlines()) #i wanna see it in console
with open("log.txt","a") as fobj: #wanna create a file log.txt and save the output there as string                                 
        fobj.write(stdout)

但我收到此错误NameError: name 'stdout' is not defined

我看过这些问题Run subprocess and print output to loggingsubprocess.Popen() doesn't redirect output to fileCan you make a python subprocess output stdout and stderr as usual, but also capture the output as a string?,但无济于事,它们对我来说太复杂了,我迷失了所有代码。 / p>

我不能只是将标准输出重定向到普通的txt文件吗? 并且有一种方法可以构建一个函数来计时该脚本的执行时间并将其放入相同的log.txt文件中(我使用time ./myscript.py花费时间,但我也不知道如何重定向它到txt文件)

1 个答案:

答案 0 :(得分:0)

您应该根据需要调整此示例

首先创建input.txt文件

然后

import sys

with open(sys.argv[1], 'r') as input, open(sys.argv[2], 'w') as output:
    for line in input:
        output.write(str(line.strip()) + '\n')

您从命令行运行它(s4.py,可以重命名)

python s4.py input.txt output.txt

输出

obama
is
my boss

您可以猜测,但输出与输入相同。