2012-05-05 2 views
0

Я пытаюсь написать программу рекурсивного списка файлов в Python. Когда я запускаю программу без исключения кода catch в конце, он возвращает номер ошибки 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, поэтому я не знаю точно, но вам нужно запустить программу с правами администратора? (эквивалентно запуску с правами root или sudo под Linux).

+0

Я знаю, что в Windows есть командная строка администратора. Я думаю, это зависит от того, как он его запускает. Я также помню, что в качестве правой кнопки мыши для запуска запуска графического редактора был параметр Run As Admin. С окнами, кто знает. – jdi

+0

Определенно, «os.walk» - это способ пойти и «не изобретать велосипед» - лучшая причина для этого. +1 – heltonbiker

Смежные вопросы