1

此代码显示访问被拒绝问题。我不想使用 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

3 回答 3

1

要么使用“sudo”,除非你的代码没有写任何东西(你可能会用错误的代码杀死你的系统),或者try: ... except PermissionError用适当的错误日志记录相关代码。

于 2017-08-05T19:28:36.223 回答
1

问题不在于您没有使用os.walk,而在于您根本没有列出/tmp/pulse-PKdhtXMmr18n目录内容所需的权限。

于 2017-08-05T19:19:08.417 回答
-1

由于您使用 / 作为路径,我假设您使用的是 Linux。您应该在脚本中添加打印以显示导致问题的路径。如果它是重要的 Linux 文件夹,如果脚本没有 root 权限,则此错误是正常的,因为对此类文件夹的访问受到限制。(和有几个这样的directrices,例如/root)

于 2017-08-05T19:19:14.890 回答