cron作业的python pickle问题

cron作业的python pickle问题,python,python-2.7,cron,Python,Python 2.7,Cron,我正在使用python创建一个对象并存储在配置文件中。没有cron作业,我就能够运行脚本并生成config.pkl。但是,一旦我将其放入cron作业中,我就无法生成config.pkl,但会生成“calling generateConfig”日志。该文件具有执行权限 下面是函数和cron作业 def generateConfig(): print "calling generateConfig" configDict = {"test1":"value1","test

我正在使用python创建一个对象并存储在配置文件中。没有cron作业,我就能够运行脚本并生成config.pkl。但是,一旦我将其放入cron作业中,我就无法生成config.pkl,但会生成“calling generateConfig”日志。该文件具有执行权限

下面是函数和cron作业

def generateConfig():
       print "calling generateConfig"
       configDict = {"test1":"value1","test2":"value2"}
       output = open('config.pkl','wb')
       pickle.dump(configDict, output)
       output.close
crontab:

00 05 * * * /user/bin/python ~/job/process.py

由于您没有为
config.pkl
提供路径,我猜它将把该文件转储到运行它的用户的主目录中;如果没有放在那里,试着搜索你的系统。若并没有记录任何错误,那个么文件很可能在某个地方,而不是您期望的地方


将任何可能产生异常(例如,编写文件)的内容包装在
try
/
catch
中,并明确地处理或记录问题,这样至少可以保持对脚本执行的控制,这也是一种很好的做法;在本例中,如果您最终尝试pickle一个资源,您的脚本可能会在不关闭该文件句柄的情况下死亡。使用带有open(…)的“
作为输出:
是一个很好的选择。

您是否绝对确定平台中的
python
位于
/user/bin
中?在大多数Linux中,它通常位于
/usr/bin
中。您是否也绝对确定cronjob生成了
“calling generateConfig”
,而不是手动运行的残余?您好@alvits,对不起,我在这个论坛上的输入错误。我仔细检查了一下,cron作业是/usr/bin/pythonHi@kungpu,我应该硬编码config.pkl的路径吗?我尝试了output=open(“~/job/config.pkl”和“wb”),但仍然无法在~/job目录中找到您是否搜索了相关用户的主目录?我建议从硬编码开始,例如,
open('/tmp/config.pkl',wb')
并查看文件是否显示在tmp中。如果是这样,那么很可能是路径/配置问题,您需要使用绝对路径而不是相对路径。如果没有,则会出现其他问题,为了进行诊断,可能需要更多的输出/错误捕获。