簡體   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