Pot*_*ips 3 python bash stdout python-3.x
我使用Python3.6编写了一个简单的HTTP服务器来重定向所有请求。
我写的文件可以在这里找到
我可以在 Win8.1 CMD 和 Ubuntu 16.04.3 Bash 中看到输出。但是,无论我尝试下面的任何方法,它都不起作用,日志无法保存到文件中。
nohup python3 ./filename.py > ./logfile 2>&1 &
python3 ./filename.py > ./logfile 2>&1 &
setsid ./filename.py > ./logfile 2>&1 &
Run Code Online (Sandbox Code Playgroud)
我尝试使用:
import sys
logfile = open('logfile.log','w')
sys.stdout = logfile
sys.stdin = logfile
sys.stderr = logfile
Run Code Online (Sandbox Code Playgroud)
它不起作用。
小智 6
默认情况下,Python 的 stdout 和 stderr 是缓冲的。正如其他响应者所指出的,如果您的日志文件为空,那么(假设您的日志记录正确)输出尚未刷新。
该脚本的链接不再有效,但您可以尝试将脚本作为python3 -u filename.py或等效的PYTHONUNBUFFERED=x python3 filename.py. 这会导致 stdout 和 stderr 流不被缓冲。
http.server使用标准库的模块来提供当前目录中的文件的完整示例:
PYTHONUNBUFFERED=x python3 -m http.server &> http.server.log & echo $! > http.server.pid
所有输出(stdout 和 stderr)都被重定向到http.server.log,可以对其进行尾部处理,并且服务器的进程 ID 被写入http.server.pid,以便您可以通过 杀死该进程kill $(cat http.server.pid)。
| 归档时间: |
|
| 查看次数: |
5240 次 |
| 最近记录: |