2017-12-15 7 views
1

저는 Python을 처음 접했고 다음 문제를 해결하려고합니다. 단어 목록을 반복하고 파일에서 찾아보고 싶으면 단어가있는 행 번호를 찾으십시오.Python - 목록의 값에서 파일 검색

files = glob.iglob(os.path.join(in_dir, '*.*')) 
List = ['word1', 'word2',...'wordn'] 

for index, word in enumerate(List): 
    print(index, word) 

    for item in files: # Iterate all files in Input directory 
     filename = os.path.basename(item) # Copy the filename without the path 
     print('file: {0}'.format(filename)) 
     with open(item, 'r') as f: 
      for num, line in enumerate(f, 0): 
       if word in line: 
        print('num: {0}, line: {1}'.format(num, line)) 

하지만 작동하지 않는 것 같습니다. 목록의 첫 번째 값만 검색했습니다. 내가하고 싶은 일은 모든 파일의 모든 List 값을 검색하는 것입니다.

답변

1

나는 iglob가 생성기를 반환한다고 생각합니다. 첫 번째 "for item in for"루프에서 get을 사용하는 일회용 iterator입니다. iglob를 glob로 바꾸거나 (일회성 반복자 대신 목록을 반환) 모든 루프마다 iglob를 다시 호출해야합니다.

발전기에 대한 자세한 내용 :

그리고 글로브 문서화를 :

희망이 있으면 올바른 방향으로 설정할 수 있습니다.

+0

OMG !!! @mathewguest 많이 일을 감사드립니다! – Maki