我对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)
我猜这是非常明显需要解决的问题,但任何帮助将不胜感激。
如何在后台启动脚本?如果你不只是通过
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
感谢您的所有提示和帮助。我通过使用 CRON 启动脚本解决了这个问题,该脚本运行良好。
仍然不知道为什么该脚本不喜欢在后台启动,但既然它可以工作,可以再等一天。
谢谢你。
我相信这里的问题就是@wjho提到的。这可能描述了一个解决方案:CSVWriter 在我写入数据时不将数据保存到文件中
在 python 中编写代码行后添加“myfile.flush()”。
我现在遇到了这个问题,实际上,如果你在 csv 文件中写更多的东西,它会有所帮助,,,,我认为你的 python 在后台运行并由“kill + pid”终止...... 看来csv.write有一个缓冲流,如果你杀死后台进程,那么流就消失了,你可以在你的csv文件中写更多的东西来检查这个,,,,