我在使用 UNIX 的 OSX 机器上。我有一个 Python 程序,我想每小时运行一次,所以我在编辑器中设置了一个基本的 cron 命令:
0 * * * * python Documents/workspace/programfolder/src/ProgramToRun.py
Run Code Online (Sandbox Code Playgroud)
我还没有真正尝试过这个,因为我已经遇到了问题。我试图python Documents/workspace/programfolder/src/ProgramToRun.py从我的主目录运行该命令,但该脚本无法在其依赖的目录中找到任何文件。就好像该程序以某种方式在我的主目录中运行并且找不到它的任何依赖项。如果我cd进入程序所在的文件夹并执行 python ProgramToRun.py,它工作正常。所以我的问题是如何让 cron 处理这个程序,就像我从它的目录运行它一样?我给出的目录是否有效,或者我是否需要提供更绝对的内容,例如 /Users/MyName...等?
您可以通过以下两种方式之一执行此操作:
第一种方式:
cd 进入包含 python 脚本和依赖项的目录,然后从那里运行它,如下所示:
(cd /Users/username/Documents/workspace/programfolder/src/ && python ProgramToRun.py)
Run Code Online (Sandbox Code Playgroud)
在这里,括号调用一个“子shell”。把它想象成一个连续的会话,所有命令都在其中运行。该&&功能的;,但如果前一个命令失败,不执行下一个命令
第二种方式:
添加Documents/workspace/programfolder/src/到PYTHONPATH里面ProgramToRun.py,如下:
import sys
sys.path.append("/Users/username/Documents/workspace/programfolder/src/")
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助