매분마다 crontab에서 파이썬 쉘을 실행합니다.
* * * * * /home/udi/foo/bar.py
/home/udi/foo
같은 몇 가지 필수 하위 디렉토리를 가지고 /home/udi/foo/log
하고 /home/udi/foo/config
있는 /home/udi/foo/bar.py
을 의미합니다.
문제는 crontab
다른 작업 디렉토리에서 스크립트 를 실행하여 열려는 시도가 ./log/bar.log
실패 한다는 것 입니다.
작업 디렉토리를 스크립트 자체 디렉토리로 변경하도록 스크립트에 지시하는 좋은 방법이 있습니까? 스크립트의 위치를 명시 적으로 알려주지 않고 모든 스크립트 위치에서 작동하는 솔루션을 좋아합니다.
편집하다:
os.chdir(os.path.dirname(sys.argv[0]))
가장 컴팩트하고 우아한 솔루션이었습니다. 답변과 설명에 감사드립니다!
crontab
사용 사례 : 모두sys.argv[0]
와__file__
스크립트를 사용하여 실행하면 실패execfile()
; 대신inspect
기반 솔루션 을 사용할 수 있습니다.