Попытка найти все.txt файлы из каталога и подкаталога
Этот код показывает проблему отказа в доступе. Я не хочу использовать функцию os.walk, чтобы получить все файлы и каталоги, которые я хочу получить без этого.
import os
import sys
test_path = "/"
def print_directory_contents(dir_path):
for child in os.listdir(dir_path):
path = os.path.join(dir_path, child)
if os.path.isdir(path):
print("FOLDER: " + "\t" + path)
print_directory_contents(path)
else:
print("FILE: " + "\t" + path)
print_directory_contents(test_path)
Output
Traceback (most recent call last):
File "a.py", line 33, in <module>
print_directory_contents(test_path)
File "a.py", line 26, in print_directory_contents
print_directory_contents(path)
File "a.py", line 26, in print_directory_contents
print_directory_contents(path)
File "a.py", line 22, in print_directory_contents
for child in os.listdir(dir_path):
PermissionError: [Errno 13] Permission denied: '/tmp/pulse-
PKdhtXMmr18n'
4 ответа
Как подсказывает @coldspeed, либо используйте "sudo", если ваш код ничего не пишет (вы можете убить вашу систему с ошибочным кодом), либо окружите соответствующий код с помощью try: ... except PermissionError
с соответствующей регистрацией ошибок.
Проблема не в том, что вы не используете os.walk
Дело в том, что у вас просто нет прав, необходимых для просмотра содержимого каталога /tmp/pulse-
PKdhtXMmr18n.
Так как у вас нет root
доступ, ваш единственный вариант - ловить и обрабатывать эти исключения по мере их поступления. Использовать try-except
скобка, как так:
def print_directory_contents(dir_path):
try:
for child in os.listdir(dir_path):
...
except PermissionError:
pass
Поймать PermissionError
(ошибка, возникающая при попытке получить доступ к файлу, к которому у вас нет разрешения). Вы можете войти или проигнорировать это, как я сделал здесь.
Поскольку вы используете / как путь, я предполагаю, что вы используете Linux. Вы должны добавить распечатку в ваш скрипт, чтобы отобразить путь, который вызывает проблему. Если это важная папка Linux, эта ошибка нормальная, если у скрипта нет привилегий root, поскольку доступ к таким папкам ограничен.(И Есть несколько таких директрис, например,/root)