繁体   English   中英

Python - 所有print和stdout如何从终端获取以便我可以创建日志?

[英]Python - all the print and stdout how can i get from terminal so that i can make a log?

为什么它在从bash >>执行时不提供输出,因此可以将其保存到文件中。

$ cat > /var/tmp/runme.sh << \EOF
#!/bin/bash
export DISPLAY=:0.0
python /var/tmp/t.py >> /var/tmp/log.log &
sleep 3
ps aux | grep "t.py" | grep -v "grep" | awk '{print $2}' | xargs kill -9;

EOF


$ cat > /var/tmp/t.py << \EOF
import sys
print "[RAN]: OK"
sys.stdout.write("[RAN]: OK")
sys.stdout.flush()
EOF

$ chmod +x /var/tmp/runme.sh ; /var/tmp/runme.sh & 

$ cat /var/tmp/log.log

$ tail -f /var/tmp/log.log

^什么都没显示。

如何使用Bash和Python组合将输出输出到log.log?

你可以让python做:

var = "hello world"
f = open('log.log', 'r+')
print(var)
f.write(var)

在var / tmp / t.py中,执行类似以下操作:

var = "[RAN]: OK"
f = open("log.log", "a+")
f.write(var)
print var
f.close()

使用“a +”参数打开“log.log”将允许您将t.py的输出附加到文件,以便您可以跟踪t.py的多次运行。 如果您只想要最近一次运行的输出,您可以使用“w +”,如果不存在则会创建一个新文件,如果存在则重写该文件。

您还可以使用日期时间在每个日志上添加时间戳,如下所示:

import datetime
now = datetime.datetime.now()
var = "Date: " + now.strftime("%Y-%m-%d %H:%M") + "\n" +  "[RAN]: OK"
f = open("log.log", "a+")
f.write(var)
print var
f.close()

我不知道这个脚本是否会定期运行,其中知道创建日志的日期会有用,或者它是否是一个完成的脚本,但我认为您可能会发现日期记录有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM