나는 여기서 완전히 길을 잃었다. 내 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
내가 도대체 뭘 잘못하고있는 겁니까? 도움을 주시면 감사하겠습니다!
그리고 상대 경로를 절대 경로로 변경하지 않고도 가능합니까? 이 솔루션을 알고 있습니다.
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())
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다