手动完成时,Python 写入文件工作正常,但 cron 失败

use*_*925 1 python cron

我编写了一个写入文本文件的 python 脚本,代码如下所示:

playercountlog = open("PMCcount.txt", "a")

playercountlog.write(time.strftime("%m/%d/%Y"));
playercountlog.write(" ");
playercountlog.write(time.strftime("%I:%M:%S"));
playercountlog.write(" ");
playercountlog.write(count);
playercountlog.write("\n")
playercountlog.close()
Run Code Online (Sandbox Code Playgroud)

这个脚本在以 root (python program.py) 执行时工作正常,但是当像这样添加到 cron 时:

* * * * * /user/bin/python /home/labtec901/program.py
Run Code Online (Sandbox Code Playgroud)

没有任何内容写入文件。

为确定起见,我已将程序和 txt 文件都修改为 777,但没有区别。是什么赋予了?

Mat*_*DMo 5

你的线路crontab应该是这样的:

* * * * * cd /home/labtec901 && /usr/bin/python /home/labtec901/program.py
Run Code Online (Sandbox Code Playgroud)

这解决了两个问题:您的程序现在在labtec901的主目录(而不是root的目录,如果它是其 crontab 的目录)中运行,并且 Python 的路径已更正 - 从/user/bin/python到/usr/bin/python.

或者,如果您不想cd在 crontab 中使用该命令,只需将其作为 python 程序的第一行:

import os
os.chdir('/home/labtec901')
Run Code Online (Sandbox Code Playgroud)

或者,您可以指定要打开的文件的绝对路径:

playercountlog = open("/home/labtec901/PMCcount.txt", "a")
Run Code Online (Sandbox Code Playgroud)