2009-07-13 6 views
1

나는 (g) vim을 사용하여 작성된 텍스트 파일이있는 디렉토리가 많이 있으며 파이썬에서 유용하다고 생각되는 유용한 유틸리티를 많이 작성했다. Cygwin에서 설치된 Python을 사용하기 위해 파운드 - 뱅 -/usr/bin/env 파이썬 라인으로 유틸리티를 시작합니다. 이는 pythonUtil에게Python 스크립트 (cygwin)가 현재 (또는 상대적) 디렉토리에서 작동하도록하려면 어떻게합니까?

%에서 cd ​​~/SomeBook

%

/usr/지방/빈/pythonUtil

% pythonUtil ./infile.txt ./를 :이 같은 명령을 입력하고 싶습니다

outfile.txt

(또는 % pythonUtil someRelPath/infile.txt somePossiblyDifferentRelPath/outfile.txt)

pythonUtil : 실측치 infile.txt; outfile.txt 쓰기; 완료되었거나 또는 무엇이든간에)

그러나 pythonUtil 프로그램은 infile.txt를 찾을 수 없다고 계속 말합니다. 유틸리티를 현재 작업 디렉토리에 복사하면 모든 것이 잘되지만, 그런 다음 유틸리티를 복사하여 풍경을 버리게됩니다. 나는 무엇을해야만 하는가?

아직 편집 : 요약하면 --- 내가 원했던 것은 os.path.abspath ('파일 이름')입니다. 그러면 절대 경로 이름이 문자열로 반환되고 모든 모호성이 제거됩니다.

그러나 사용되는 파이썬이 cygwin에서 설치된 경우, 절대 경로 이름은 /home/someUser/someDir/someFile.txt와 같이 CYGWIN 상대 경로 이름이됩니다. 그러나 파이썬이 Windows 환경에 설치되어 있다면 cygwin 터미널 명령 줄에서 호출됩니다. 그 다음 절대 경로 이름은 D : \ cygwin \ home \ someUser와 같은 아래의 '드라이브'에서 전체 Windows 경로가됩니다 \ someDir \ someFile.txt.

도덕적 : cygwin Python이 /에 루핑되지 않은 파일에 대해 Windows 완전한 절대 경로 이름을 생성한다고 기대하지 마십시오. 그것의 이벤트 지평선 너머에있어. 그러나 "/ cygdrive/driveLetter"leadin 규칙을 사용하여 파일 경로를 지정하면 cygwin-python을 사용하여 WinXP 시스템의 모든 파일에 연결할 수 있습니다.

비고 : Cygwin 명령 줄의 WinXP 경로에서 구분자로 '\'를 사용하지 마십시오. '/'를 사용하고 뱀을 신뢰하십시오. 이유는 모르겠지만 일부 분리 기호가 누락 될 수 있으며 경로는 "Documents and Settings \ someUser"및 기타 Windows 넌센스와 같은 추가 레벨을 포함하도록 수정 될 수 있습니다.

나를 올바른 방향으로 밀어 준 응답자 덕분입니다. os.getcwd에서

답변

4

봐 :

편집 :

: 상대 경로의 경우,을 os.path 모듈에서 봐 주시기 바랍니다

특히, os. path.join 및 os.path.normpath. 예 :

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

위대한 마음은 ... 나도 상대 경로를 처리 거기에 뭔가 거기에 가정하는 바로시겠습니까? 봐봐. – behindthefall

+0

:) 상대 경로에 대한 답변을 업데이트했습니다. – ars

+0

감사! os.path.abspath ('경로')는 나에게 호소합니다. 그런 종류의 모든 불확실성을 제거하고, 어떤 것을 입력 할 필요가 없었습니다. – behindthefall

0

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

+0

예. 실제로 텍스트 파일은 ~/SomeBook 디렉토리에 있습니다. (나는 그렇지 않은 경우에 매우 화가 난다!) – behindthefall

0
os.chdir(my_dir) 

또는

os.chdir(os.getcwd()) 
+0

상대 경로 상황을 다루고 있습니까? – behindthefall

관련 문제