2017-11-25 15 views
0

이 함수는 파일 경로를 반환하지 않지만 목록을 추가하면이 함수가 제대로 작동합니다. 이 코드를 실행할 때 오류가 발생했습니다.생성자를 재귀에서 가져 오는 방법

역 추적 (마지막으로 가장 최근 통화) : 파일 "C : /Users/admin/PycharmProjects/testProj/testFile.py", 라인 (28), 에서 인쇄 myFiles.next() StopIteration을

import os 

basePath1 = 'D:/my_backup/' 

def testFunction(basePath): 
    for each in os.listdir(basePath): 
     newBase = basePath 
     if os.path.isfile(newBase + each): 
      yield newBase + each 
     else: 
      newBase += each + '/' 
      testFunction(newBase) 


myFiles = testFunction(basePath1) 

print myFiles.next() 
print myFiles.next() 
print myFiles.next() 
+0

list.append의 사용법을 보여줄 수 있습니까? – TinyTheBrontosaurus

+0

또한 해당 폴더에 무엇이 있습니까? – TinyTheBrontosaurus

+0

수입 OS 의 basePath1 = 'D/my_backup /' 목록으로 myList =() 데프 testFunction (basePath) os.listdir 각 대 (basePath) newBase = basePath 경우 os.path.isfile (newBase + 각) : # 항복 newBase + 각 myList.append (newBase + 각) 다른 : newBase + = 각 + '/' testFunction (newBase) testFunction (basePath1) 인쇄 myList를 –

답변

0

next() 함수를 사용하여 반복기의 모든 항목을 수동으로 반복합니다. 끝까지 도달하고 반환 할 데이터가 더 이상 없으면 StopIteration을 발생시킵니다.

따라서 예외를 피하기 위해이 방법을 시도해야합니다.

for myFile in myFiles: 
    print myFile