后台运行python脚本时未创建输出文件
我刚接触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