使用 crontab 到 运行 Python 脚本时出现 FileNotFoundError
FileNotFoundError while using crontab to run Python script
我完全迷失在这里。我试图在我的 Mac 上为 运行 python 脚本创建调度程序,但出现以下错误:
Traceback (most recent call last):
File "/Users/Root/Desktop/Project/Data/script.py", line 148, in <module>
run(
File "/Users/Root/Desktop/Project/Data/script.py", line 121, in run
config = get_config("config")
File "/Users/Root/Desktop/Project/Data/config/__init__.py", line 3, in get_config
with open(f"config/{config_type}.json", "r") as file:
FileNotFoundError: [Errno 2] No such file or directory: 'config/config.json'
所以crontab让我相信没有这样的文件或目录,这是不正确的。我可以 运行 我的脚本手动没有错误。
我的 crontab 是:
00 19 21 1-12 * /Library/Frameworks/Python.framework/Versions/3.9/bin/python3/ /Users/Root/Desktop/Project/Data/script.py >> /Users/Root/Desktop/Project/Data/cron.txt 2>&1
我做错了什么?
如果有任何帮助,我将不胜感激!
这是否可以在不将相对路径更改为绝对路径的情况下实现?我知道这个解决方案
尝试使用 json 文件的完整路径打开。
我假设 crontab 的 cwd(当前工作目录)与脚本的存储位置不同。
这将解决您的问题:
import os
script_dir = os.path.dirname(os.path.realpath(__file__))
os.chdir(script_dir)
您可以通过调用“os.path.dirname(os.path.realpath(file))”
获取脚本所在的目录
如果您更改当前工作目录“os.chdir(...dir...)”,您可以通过相对路径访问您 config/config.json,
否则你将不得不使用绝对路径
试试运行这个并检查你的输出文件:
import os
script_dir = os.path.dirname(os.path.realpath(__file__))
print (os.getcwd())
print(script_dir)
os.chdir(script_dir)
print (os.getcwd())
我完全迷失在这里。我试图在我的 Mac 上为 运行 python 脚本创建调度程序,但出现以下错误:
Traceback (most recent call last):
File "/Users/Root/Desktop/Project/Data/script.py", line 148, in <module>
run(
File "/Users/Root/Desktop/Project/Data/script.py", line 121, in run
config = get_config("config")
File "/Users/Root/Desktop/Project/Data/config/__init__.py", line 3, in get_config
with open(f"config/{config_type}.json", "r") as file:
FileNotFoundError: [Errno 2] No such file or directory: 'config/config.json'
所以crontab让我相信没有这样的文件或目录,这是不正确的。我可以 运行 我的脚本手动没有错误。 我的 crontab 是:
00 19 21 1-12 * /Library/Frameworks/Python.framework/Versions/3.9/bin/python3/ /Users/Root/Desktop/Project/Data/script.py >> /Users/Root/Desktop/Project/Data/cron.txt 2>&1
我做错了什么? 如果有任何帮助,我将不胜感激!
这是否可以在不将相对路径更改为绝对路径的情况下实现?我知道这个解决方案
尝试使用 json 文件的完整路径打开。
我假设 crontab 的 cwd(当前工作目录)与脚本的存储位置不同。
这将解决您的问题:
import os
script_dir = os.path.dirname(os.path.realpath(__file__))
os.chdir(script_dir)
您可以通过调用“os.path.dirname(os.path.realpath(file))”
获取脚本所在的目录如果您更改当前工作目录“os.chdir(...dir...)”,您可以通过相对路径访问您 config/config.json,
否则你将不得不使用绝对路径
试试运行这个并检查你的输出文件:
import os
script_dir = os.path.dirname(os.path.realpath(__file__))
print (os.getcwd())
print(script_dir)
os.chdir(script_dir)
print (os.getcwd())