Я пытаюсь запустить команду поиска, используя подпроцесс python, чтобы вывести список файлов, находящихся в каталоге. Внутри есть определенные файлы / подкаталоги, к которым у меня нет прав доступа. Я хочу sh просто пропустить эти файлы и перечислить те, к которым у меня есть доступ.
Запуск find / -type f
с терминала просто упоминает каталоги, в которых отказано в разрешении, и продолжает печатать доступные файлы. Что-то вроде этого
/var/cache/apt/pkgcache.bin
/var/cache/apt/srcpkgcache.bin
find: ‘/var/cache/apt/archives/partial’: Permission denied
/var/cache/apt/archives/lock
/var/cache/jaeger/jaeger-1.16.0-linux-amd64.tar.gz
Я пытаюсь имитировать c такое же поведение, используя вызов подпроцесса python, как показано ниже. Однако код просто выдает исключение Command '['find', '/', '-type', 'f']' returned non-zero exit status 1
def subprocess_check_output(command):
try:
output = subprocess.check_output(command, universal_newlines=True)
except Exception as e:
print(e)
sys.exit(1)
else:
return output
command = ['find', dir, '-type', 'f']
accessible_files = subprocess_check_output(command).splitlines()
Как мне обойти это, чтобы получить список всех доступных файлов?