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

问题描述 投票:0回答:4

我对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 csv background-process
4个回答
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


0
投票

感谢您的所有提示和帮助。我通过使用 CRON 启动脚本解决了这个问题,该脚本运行良好。

仍然不知道为什么该脚本不喜欢在后台启动,但既然它可以工作,可以再等一天。

谢谢你。


0
投票

我相信这里的问题就是@wjho提到的。这可能描述了一个解决方案:CSVWriter 在我写入数据时不将数据保存到文件中

在 python 中编写代码行后添加“myfile.flush()”。


-1
投票

我现在遇到了这个问题,实际上,如果你在 csv 文件中写更多的东西,它会有所帮助,,,,我认为你的 python 在后台运行并由“kill + pid”终止...... 看来csv.write有一个缓冲流,如果你杀死后台进程,那么流就消失了,你可以在你的csv文件中写更多的东西来检查这个,,,,

© www.soinside.com 2019 - 2024. All rights reserved.