루트 경로에서 Python 파일 문제

루트 경로에서 Python 파일 문제

잘 테스트되고 작동하는 스크립트가 있습니다. 스크립트를 실행하려고 할 때 /root/backup/script.py또는 ~/backup/script.py스크립트가 실행되어 스크립트 내에서 호출된 다른 파일을 찾을 때 스크립트에서 파일을 찾을 수 없음 오류가 발생하는 문제가 발생했습니다 . 다른 컴퓨터에서도 작동하지만 설정은 동일하며 python backup/script.py홈 디렉터리에서 실행하거나 직접 실행하면 python script.py작동합니다. 얻으려는 파일은 script.py와 동일한 디렉토리에 있으므로 무엇이 잘못되었는지 알 수 없습니다. 스크립트에서 호출한 첫 번째 파일을 가져올 수 있지만 파일은 가져올 수 없습니다.

동일한 방식으로 수행하면 다른 시스템에서도 작동하기 때문에 이것이 일종의 경로 문제일 수 있다고 생각합니다.

편집하다

첫 번째 댓글을 읽은 후 충돌이 발생하는 코드 조각을 게시했고 제가 말했듯이 첫 번째 파일도 찾을 수 없다는 것을 깨달았습니다. 코드에 버그가 있어서 죄송합니다. 위에서 말했듯이 다른 위치에서는 작동하지만 제가 언급한 두 위치에서는 작동하지 않습니다.

storage = Storage("user_creds.dat")
credentials = storage.get()
if credentials is None or credentials.invalid:
        credentials = run_flow(flow_from_clientsecrets("client_secrets.json", OAUTH_SCOPE, ), storage, fla$

답변1

파일을 찾을 수 없음 오류는 다른 디렉터리에서 스크립트를 실행하면 발생할 수 있습니다.

storage = Storage("user_creds.dat")

user_creds.dat스크립트가 시작되었는지 여부만 알 수 있습니다.~에서예를 들어 이 디렉토리는

]$ pwd
~/backup
]$ python script.py

어디에서나 스크립트를 시작할 수 있어야 하는 경우 이를 지정할 수 있습니다 user_creds.dat. 또는 다음 명령을 사용하여 스크립트가 있는 디렉터리를 가져올 수 있습니다.

os.path.dirname(os.path.realpath(__file__))

그런 다음 다음을 통해 저장 개체를 얻을 수 있습니다.

os.path.join(os.path.dirname(os.path.realpath(__file__)), 'user_creds.dat')

관련 정보