我正在尝试执行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 logging,subprocess.Popen() doesn't redirect output to file,Can 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文件)
答案 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
您可以猜测,但输出与输入相同。