2012-05-05 2 views
0

파이썬에서 재귀 파일 목록 프로그램을 작성하려고합니다. 끝에 예외 코드를 넣지 않고 프로그램을 실행하면 오류 번호 5, 이 반환되어 일부 Windows 폴더에 대한 액세스가 거부되었음을 알립니다. 관리자 권한과 모든 권한이 있지만 여전히이 오류가 계속 발생합니다. 이 문제를 해결하고 해당 디렉토리에있는 파일을 나열 할 수 있습니까?오류 5 폴더를 재귀 적으로 보려고 할 때

import os 

def wrapperList(): 
    mainList = [] 
    fileList = os.listdir("C:") 
    for file in fileList: 
     path = os.path.join("C:\\", file) 
     if (os.path.isdir(path)): 
      mainList.append(recurList(path)) 
     else: 
      mainList.append(path) 
    print mainList 
def recurList(directory): 
    try: 
     fileList = os.listdir(directory) 
     tempList = [] 
     for file in fileList: 
      path = os.path.join(directory, file) 
      if (os.path.isdir(file)): 
       tempList.append(recurList(path)) 
      else: 
       tempList.append(file) 
     return tempList 
    except: 
     return ["Access Denied"] 

wrapperList() 
+2

코드에 연결하거나 게시하지 마시고 예외를 게시하십시오. 편집 : 귀하의 게시물에 넣어 코드를 수정했지만 예외를 추가해야합니다. –

답변

3

이것은 동일한 것을 직접 구현하려고 시도하는 것보다 os.walk을 사용하는 것이 훨씬 더 나을 것 같은 예입니다.

예컨대 : 당신은 권한이 거부지고있는 경우

import os 

for root, dirs, files in os.walk("/some/path"): 
    ... 

오류에 관해서는, 그때는 아마 당신이 정말로 거기에 액세스가 거부되어있다. 나는 Windows 사용자가 아니므로 확실하지는 않지만 관리자 권한으로 프로그램을 실행해야합니까? (루트로 실행하는 것과 동일하거나 리눅스에서 sudo).

+0

Windows에 관리자 명령 프롬프트가 있다는 것을 알고 있습니다. 나는 그가 어떻게 시작하는지에 달려 있다고 생각한다. 또한 그래픽으로 실행하기위한 관리자 권한으로 실행 옵션이 있음을 기억합니다. 누가 창을 가지고 있는지. – jdi

+0

확실히, 'os.walk'는 갈 길이며 "바퀴를 다시 만들지 마십시오"는 가장 좋은 이유입니다. +1 – heltonbiker

관련 문제