我在bash script
python -u - << EOF
from my.package import script
script.run()
EOF
>> /path/to/log/file
在script.py
中有一些print statements
,我想将控制台的输出重定向到文件。文件成功创建,但它是空的。
我该如何解决这个问题?我在这里缺少什么?
答案 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
)。