后台运行python脚本时未创建输出文件

0 投票
4 回答
1675 浏览
提问于 2025-04-17 05:02

我刚接触Python,感觉有点超出我的能力范围了。

我拼凑了一个脚本,这个脚本用cURL从Twitter获取一个JSON格式的数据流,并把它转换成CSV文件。

当我在命令行前台运行这个脚本时,一切都很顺利,但当我用nohup在后台运行时,它只会生成一个0字节的文件,连CSV的表头都没有写进去。

这里有一段代码:

import pycurl, json, csv 
from datetime import *

outfile_path='/home/XXXX/twitter-feed.csv'
writer = csv.writer(open(outfile_path, 'wb'))

headers = ["user","timestamp","X","Y"]
writer.writerow(headers)

我觉得这个问题应该很容易解决,但如果有人能帮忙就太好了。

4 个回答

0

我觉得这里的问题是@wjho提到的。这个链接可能会给出一个解决办法: CSVWriter没有立即把数据保存到文件中

在你用Python写完数据后,记得加上'myfile.flush()'。

0

谢谢大家的建议和帮助。我通过使用CRON来运行这个脚本,问题解决了,效果很好。

我还是不明白为什么这个脚本不喜欢在后台运行,不过既然现在能正常工作,那就先放一放,等有时间再研究吧。

谢谢大家。

0

你怎么让脚本在后台运行呢?如果你不是直接用 python script.py & 来运行它,那我猜可能是路径有问题。试着在脚本文件的第一行加上

#!/usr/bin/python

然后用

chmod +x script.py

来让这个文件可以执行,接着用

/full/path/to/script.py

来运行它。同时确保 pycurl 在脚本运行的环境中在 python的路径里。

如果这些都没用(或者在尝试之前),可以试着捕捉一下脚本的输出(如果它“崩溃”了,会打印出错误信息),也就是: /full/path/to/script.py > /home/xxx/output.log 2>&1

撰写回答