2011-09-15 6 views
1

저는/home/n00b 디렉토리에 program1.py라는 파일을 만들었습니다. 그런 다음 Python을 열었습니다. 스크립트를 작성하여 위치를 찾을 수 있는지 알고 싶었습니다. 나는 이것을했다 :os.walk()로 파일을 찾을 수 없습니다

for f in os.walk('/home/n00b'): 
    print 'searching', f 
    if 'program1.py' in f: 
      print 'found' 
      break 

왜이 기능이 작동하지 않습니까? 그것은 내 화면이 '검색'부분으로 가득 차 있기 때문에 각 파일을 검색하는 것 같지만 절대로 발견하지 못합니다. 여기에 파일 이름의 현재 디렉토리, 여기 디렉토리 이름의 목록 및 목록 :

for curdir, dirs, files in os.walk('/home/n00b'): 
    print 'searching', files 
    if 'program1.py' in files: 
      print 'found' 
      break 

귀하의 인쇄 문 당신이 보여해야 os.walk 반환 3 튜플이 때문에

+0

코드가 이상하게 보일 경우 죄송합니다. 내 아이폰에서 게시 이유는 설명합니다. ; O – jjJ

답변

4

것은이 작동하지 않습니다. in 연산자는 튜플을 자세히 보지 않으며 파일 이름이 터플의 세 요소 중 하나가 아니므로 코드에서 찾지 못했습니다.

+0

아, 그래서 그 이유는 무엇입니까? Muchos gracias. – jjJ

0

기능 os.walk()이 예상대로 작동하지 않습니다. 파일 목록을 제공하는 대신 디렉토리, 서브 디렉토리 및 파일과 함께 튜플 (목록과 유사)을 제공합니다. 따라서 다음을 사용할 수 있습니다 :

for d, s, f in os.walk('/home/n00b'): 
    print 'searching', d 
    if 'program1.py' in f: 
      print 'found' 
      break 

희망이 있습니다.

0

f-> f [2]를 변경하여 walk에서 반환 된 튜플의 세 번째 요소를 가져올 수 있습니다.

for f in os.walk('/home/n00b'): 
    print 'searching', f 
    if 'program1.py' in f[2]: 
      print 'found' 
      break 
+0

하! 우리는 모두 같은 시간에 도착했습니다 ... 저는 네드의 대답을 선호합니다. 그 이유는 내 것이 3 바이트 만 변경 되더라도, 진행되는 것에 대해 더 많이 알려주고 (일반적으로 더 유용합니다) P – sillyMunky

관련 문제