【问题标题】:Python script not working in crontab, but works fine withoutPython 脚本在 crontab 中不起作用,但没有
【发布时间】:2017-07-01 07:24:59
【问题描述】:

我在过去的 crontab 配置文件中使用这样没有问题

PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
0 * * * * source /Users/bezoadam/Documents/FIT/6.semester/BP/bp1/bin/activate; /usr/bin/env python3 /Users/bezoadam/Documents/FIT/6.semester/BP/twitter_down.py --hashtag
0 * * * * source /Users/bezoadam/Documents/FIT/6.semester/BP/bp1/bin/activate; /usr/bin/env python3 /Users/bezoadam/Documents/FIT/6.semester/BP/facebook_down.py

比我编辑 python 文件并将它们粘贴到 /BP_FINAL 目录并像这样使用新的 crontab

PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/bezoadam/Documents/FIT/6.semester/BP/BP_FINAL
0 * * * * source /Users/bezoadam/Documents/FIT/6.semester/BP/bp1/bin/activate; /usr/bin/env python3 /Users/bezoadam/Documents/FIT/6.semester/BP/BP_FINAL/twitter_down.py --hashtag
0 * * * * source /Users/bezoadam/Documents/FIT/6.semester/BP/bp1/bin/activate; /usr/bin/env python3 /Users/bezoadam/Documents/FIT/6.semester/BP/BP_FINAL/facebook_down.py

现在每次运行都会从 python 文件中抛出一个错误

FileNotFoundError: [Errno 2] No such file or directory: 'new_emoji_sentiment.json'

当我在终端中运行脚本时,一切正常。 我认为$PATH 有问题,但我不知道如何解决。感谢您的帮助。

【问题讨论】:

  • 您的一个 Python 脚本显然正在尝试读取具有硬编码路径的文件。更新受影响脚本中的文件名或将所需文件移动到新路径

标签: python bash path crontab


【解决方案1】:

crontab 运行脚本的当前工作目录可能与手动运行脚本的文件夹不同。 我建议将您正在读取/写入的文件的绝对路径添加到脚本(可能是/Users/bezoadam/Documents/FIT/6.semester/ ...?)而不是相对路径(new_emoji_sentiment.json)。

【讨论】:

  • 谢谢,这就是问题所在。我添加了绝对路径,现在一切正常。顺便说一句,我不知道为什么我的问题得到了否定。我遵守了所有的问题规则。
【解决方案2】:

请尝试在您的系统文件中再添加一次路径。并尝试在 CMD 提示符下运行此文件。它会在上面运行。

【讨论】:

  • 为什么会有帮助? OP 还说它可以在终端上工作。(这是 Un*x,所以不是 CMD 提示符)
猜你喜欢
  • 1970-01-01
  • 2013-01-12
  • 2019-09-30
  • 2020-04-22
  • 2016-10-03
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
相关资源
最近更新 更多