Python Script (Cygwin)에게 현재 (또는 상대적) 디렉토리에서 작동하도록하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1117414

문제

(g) vim을 사용하여 작성된 텍스트 파일이 포함 된 많은 디렉토리가 있으며 Python에서 유용한 소수의 유틸리티를 작성했습니다. Cygwin에 설치된 파이썬을 사용하기 위해 파운드-뱅-/USR/bin/env python line으로 유틸리티를 시작합니다. 다음과 같은 명령을 입력하고 싶습니다.

%CD ~/일부 책

%어떤 pythonutil

/usr/local/bin/pythonutil

%pythonutil ./infile.txt ./outfile.txt

(또는 % pythonutil somerelpath/infile.txt somepossiblydiffferentrelpath/outfile.txt)

Pythonutil : 발견 된 infile.txt; outfile.txt 작성; 완료 (또는 어떤 경우도)

그러나 내 Pythonutil 프로그램은 계속해서 infile.txt를 찾을 수 없다고 말합니다. 유틸리티를 현재 작업 디렉토리에 복사하면 모든 것이 잘되지만, 유틸리티의 사본이 풍경을 흩어지고 있습니다. 나는 무엇을해야합니까?

또 다른 편집 : 요약 --- 내가 원하는 것은 os.path.abspath ( 'filename')였습니다. 이는 절대 PathName을 문자열로 반환 한 다음 모든 모호성이 제거되었습니다.

그러나 사용중인 파이썬이 Cygwin에 설치된 파이썬 인 경우 절대 PathName은 /home/someuser/somedir/somefile.txt와 같은 Cygwin-Relative PathName입니다. 그러나 파이썬이 Windows 아래에 설치되고 (Cygwin Terminal Commandline에서 호출되는 경우), 절대 PathName은 d : cygwin home sodonUser와 같이 'drive'에서 'drive'에서 완전한 Windows 경로가됩니다. somedir idefile.txt.

Moral : Cygwin Python이 /에 루팅되지 않은 파일에 대한 Windows-Complete Absolute PathName을 생성 할 것으로 기대하지 마십시오. 이벤트 수평선을 넘어서고 있습니다. 그러나 "/cygdrive/driveletter"리드 컨벤션을 사용하여 파일의 경로를 지정하면 Cygwin-Python을 사용하여 WinXP 시스템의 파일에 연락 할 수 있습니다.

비고 : Cygwin Commandline의 WinXP 경로에서 분리기에 ''를 사용하지 마십시오. '/'를 사용하고 뱀을 신뢰하십시오. 왜 그런지 모르지만 일부 분리기를 삭제하고 "문서 및 설정 sodonuser"및 기타 Windows의 말도 안되는 추가 레벨을 포함하도록 경로를 수정할 수 있습니다.

올바른 방향으로 나를 밀어 넣은 응답자들에게 감사합니다.

도움이 되었습니까?

해결책

os.getcwd를보십시오 :

편집 : 상대 경로는 os.path 모듈을 살펴보십시오.

특히, os.path.join 및 os.path.normpath. 예를 들어:

import os
print os.path.normpath(os.path.join(os.getcwd(), '../AnotherBook/Chap2.txt'))

다른 팁

"ls"를 입력하면 어떻게됩니까? 거기에 "infile.txt"가 나열되어 있습니까?

os.chdir(my_dir)

또는

os.chdir(os.getcwd())
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top