我编写了一个写入文本文件的 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,但没有区别。是什么赋予了?
你的线路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)