将python输出重定向到文件

时间:2017-08-22 12:12:57

标签: python bash

我在bash script

中有以下代码
python -u - << EOF
from my.package import script
script.run()
EOF
>> /path/to/log/file

script.py中有一些print statements,我想将控制台的输出重定向到文件。文件成功创建,但它是空的。

我该如何解决这个问题?我在这里缺少什么?

3 个答案:

答案 0 :(得分:2)

这个想法是正确的,但是你将输出重定向到here-document的文件的方式是错误的,Heredocs本身就像任何其他命令一样重定向,只是做

python -u - << EOF >> /path/to/log/file
from my.package import script
script.run()
EOF

答案 1 :(得分:0)

试试这个,

import sys
f = open("log_file.txt", 'w')
sys.stdout = f
print "My print statements"
f.close()

答案 2 :(得分:0)

正确的语法是:

python -u - >> /path/to/log/file << EOF
from my.package import script
script.run()
EOF

原因是如果你用bash写这样的东西:

util_1 | util_2 | util_3 >> some_file < another_file

util_1 | util_2 | util_3 >> some_file << EOF
...
EOF

another_file或here-document转到管道中第一个实用程序的标准输入(在本例中为util_1)。