【问题标题】:Python scripts couldn't work with crontabPython 脚本无法与 crontab 一起使用
【发布时间】:2021-09-26 14:35:04
【问题描述】:

我是 stackoverflow 的新手,真的希望能得到关于 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 ''

我已经搜索了两个晚上的 stackoverflow,但找不到解决方案。我主修金融,没有朋友学习计算机科学。

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

【问题讨论】:

    标签: python macos cron scheduled-tasks


    【解决方案1】:

    由于这是一个 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 条目中的 987654328@ 部分。

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

    您也可能会遇到缺少环境变量的问题。如果您在配置 Python、添加库等的 shell 初始化脚本中设置任何环境变量,则不会在 cron 作业的环境中设置这些变量。

    【讨论】:

    • 嗯...你能告诉我如何处理它吗:如果你想把它放在 Documents/Lynn 的 Python work/shopee 目录中,你必须明确指定。跨度>
    • 我已经编辑了我的 python 脚本来导入 os f = open(os.getcwd()+"/test_crontab.txt",'w+') f.write("Success") f.close () 但是这个脚本可以保存在 /usrname/ 路径?
    • os.getcwd() 告诉你工作目录,和脚本所在的目录没有特别的关系。获取脚本的目录比较复杂;见this question,也许this one
    猜你喜欢
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2012-10-26
    • 2019-08-28
    • 2015-08-26
    • 2018-01-18
    • 1970-01-01
    相关资源
    最近更新 更多