Python 脚本无法与 crontab 一起工作

Python scripts couldn't work with crontab

我是 Whosebug 的新手,真的希望得到关于 crontab 问题的答案。 我在 BigSur 中使用 MacbookAir(不知道它是否影响)并且我的 crontab 不能 运行 python 下面的脚本。

f = open("test_crontab.txt",'w+')
f.write("Success")
f.close()

但我可以 运行 使用 Spyder 编写此脚本。 我可以使用 crontab -e 编辑 crontab,我在 vi crontab 中的代码是

13 01 * * * /bin/zsh  /Users/myusername/Documents/Lynn\'s\ Python\ work/shopee/test.py >>/Users/myusername/Desktop/out.log 2>>/Users/tzulingkuo/Desktop/err.log

但是生成txt文件失败

err.log中的消息如下:

/Users/*myusername*/Documents/Lynn's Python work/shopee/test.py:5: missing end of string
/Users/*myusername*/Documents/Lynn's Python work/shopee/test.py:6: unknown username ''

我在Whosebug上找了两晚也没找到解决办法。我学的是金融专业,没有学计算机的朋友

谁能帮帮我 非常感谢任何帮助!

因为这是一个 python 脚本,您需要 运行 它在 python 而不是 /bin/zsh 中。 zsh 试图将其解释为 shell 脚本,但语法全错了,所以你会出错。

解决此问题的最简单方法是将 crontab 条目中的 /bin/zsh 替换为 /usr/bin/python(假设您使用的是内置 Python 版本 2;如果您已安装Python 版本 3 并想使用它,运行 which python 在命令行找到它的路径)。

但通常最好在 python 脚本中添加 shebang 行,并让它控制 运行 的方式。将此添加为脚本的第一行:

#!/usr/bin/python

(同样,如果您想使用 Python 3,请将路径部分替换为 Python 3 解释器的路径。)然后使用 chmod +x /Users/myusername/Documents/Lynn\'s\ Python\ work/shopee/test.py 使脚本可执行, 从 crontab 条目中删除 /bin/zsh 部分。

顺便说一句,您可能会遇到路径问题。默认情况下,cron 作业 运行 的工作目录设置为您的主目录,因此当脚本打开 test_crontab.txt 时,将被解释为 /Users/myusername/test_crontab.txt。如果你想把它放在 Documents/Lynn's Python work/shopee 目录中,你必须明确指定它。

您还可能 运行 因缺少环境变量而陷入困境。如果您在配置 Python、添加库等的 shell 初始化脚本中设置任何环境变量,则不会在 cron 作业的环境中设置这些变量。