2014-11-25 84 views
0

我不是Bash和Python的专家,所以这个问题可能显得很愚蠢。Python stdout日志记录:终端vs bash文件

我有一个叫做learn.py的Python脚本,当我重定向到一个日志文件时,我注意到了标准输出的两种不同行为。

如果我从终端调用这个,我可以看到日志文件的大小在脚本运行时增长。

$ ./learn.py > file.log 

但是,如果我为同一个目的是bash文件:

#!/bin/bash 
./learn.py > file.log 

脚本开始(我pgrep检查),但它似乎并没有跑,因为日志文件保持为空。我错过了什么吗?

+0

你能张贴你的' learn.py'脚本呢? – Balthamos 2014-11-25 01:23:27

+0

即使所有你放在'learn.py'是'print'你好吗?“'... – 2014-11-25 01:23:41

+0

@Balthamos'learn.py'是一个使用NLTK库的复杂脚本。 @JoranBeasley它的作品只是“你好”。是否有可能只在计算结束时填充文件? – mommi84 2014-11-25 01:32:06

回答

0

我解决了使用Logging facility for Python,通过插入

import logging 
logging.basicConfig(filename='file.log',level=logging.INFO) 

logging.info("...") 

最终bash脚本取代的print "..."每次发生:

#!/bin/bash 
./learn.py 
+1

另请参阅https://docs.python.org/3/library/syslog.html – SMUsamaShah 2018-02-07 07:32:45