2014-03-12 3 views
0

파이썬에 아주 익숙하기 때문에 미리 사과하고 누락 된 디렉토리를 찾는 매우 간단한 스크립트라고 썼습니다. 스크립트는 한 번에 한 라인 씩 파일을 읽어 들이고 (각 라인은 유닉스 스타일의 디렉토리를 포함한다), 그 디렉토리가 존재 하는지를 검사하고 존재하지 않으면 메시지를 표시하고 그 디렉토리를 출력 파일에 쓴다 .파이썬 os.path.exists가 작동하지 않습니다

문제는

내가 출력 파일에 나열된 첫 번째 디렉토리가 I로 존재한다는 것을 확실히 알고 ... 내가 존재하는 출력 파일의 디렉토리를 가지고 나는 그 이유에 관해서는 확실하지 않다이다 파일 처음부터 처음 12 개 정도를 확인했습니다. 일관되게 첫 번째 디렉토리가 존재하지만 내가 확인한 나머지는 그렇지 않음을 알 수 있습니다. 심지어 파이썬 대화 형 모드에서 동일한 검사를 실행하고 True를 반환하므로이 디렉터리가 출력 파일에 기록되는 이유를 알 수 없습니다.

어떤 아이디어가 있습니까? 아래의 입력 파일의

import os 
f = open('missingdirs.out', 'w') 
for line in file('alldirs.txt', 'r'): 
    if not os.path.exists(line.strip()): 
      print "Could not find the path specified: " + line.strip() 
      f.write(line.strip()+'\n') 
f.close() 

샘플 (이 절대 경로입니다) :

/home/sites/shared/lingui/course/0418-0001_AUT_Can 
/home/sites/shared/lingui/course/0418-0001_AUT_Do 
/home/sites/shared/lingui/course/0418-0001_AUT_How 
/home/sites/shared/lingui/course/0418-0001_AUT_Is-Are 
/home/sites/shared/lingui/course/0418-0001_AUT_What 
/home/sites/shared/lingui/course/0418-0001_AUT_When 
/home/sites/shared/lingui/course/0418-0001_AUT_Where 
+2

입력 파일의 샘플을 추가 할 수 있습니까? – Dyrborg

+0

'alldirs.txt'와 같은 소리가 여러분이 생각하는대로 작동하지 않습니다 –

+0

또한 .strip()을 사용할 때 공백 만 제거합니다. \ n, \ r 또는 비슷한 것을 가지고 있지 않은지 확인하십시오 dirs가 있는지 여부를 확인할 때도 마찬가지입니다. – Dyrborg

답변

0

몇 가지 간단한 문제 해결 단계 ....

with open('alldirs.txt','r') as in_: 
    lines = list(map(str.strip,in_.readlines())) 
print('\n'.join(lines[:10])) 
# maybe your input is not what you think it is 

import os 
path = r"/home/sites/shared/lingui/course/0418-0001_AUT_Can" 
print(os.path.exists(path)) 
# use a string literal rather than the file read -- does THAT work? 

나는 모든하지만이 문제가 있음을 보장 할 수 입력 파일이 부적절하게 포맷되어 있습니다.

+0

대단히 고마워, 나는 이것을 시도하고 다시 연락 할 것이다. 나는 지금 막 다른 작업을하고있다. – Mallocai

관련 문제