我有一个 python 脚本在 linux 中作为服务运行(也作为自动运行),它有很多输出!当程序已经运行时,如何读取此输出?
也许我可以将所有输出记录到一个文件中,但是当记录新输出时,我必须一直打开并刷新文件!
好吧,当谈到问题的第二段时,您可以在 shell 中执行以下操作:
tail -f logfile.log
它会在文件更新时自动刷新,因此在 Linux 下这是一个可行的解决方案。
也可以从python端实现tail,基本就是连续读取它。可以在这里找到使这项工作的代码片段:
http://code.activestate.com/recipes/157035-tail-f-in-python/
另外,如果您使用文件写入的追加模式而不是写入方法,您可以连续输出。
Scrapy 还使用了管道的概念,它允许许多相同的功能。这是一些你可能用来做同样事情的scrapy代码的例子:
class JsonWriterPipeline(object):
def __init__(self):
self.file = (open(filepath, 'a'))
def process_item(self, item, spider):
self.file.write(json.dumps(dict(item)) + '\n')
return item