2017-08-05 195 views
1

此代码显示访问被拒绝的问题。我不想使用os.walk函数来获取我想要没有的所有文件和目录。试图从目录和子目录中查找所有.txt文件

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' 
+0

尝试用'sudo'运行你的程序。 –

回答

0

的问题不在于你不使用os.walk,那就是,你根本就没有列出的的/ tmp /脉冲 - 内容所需的权限PKdhtXMmr18n目录。

+0

等任何其他选项?因为我没有root权限。 – abhi09sep

+0

@ abhi09sep有。你可以抓住错误并处理它。看看[我的回答](https://stackoverflow.com/a/45525677/4909087)。 –

-1

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

0

由于您没有root访问权限,您唯一的选择是捕获并处理这些异常。使用try-except支柱,像这样:

def print_directory_contents(dir_path): 
    try: 
     for child in os.listdir(dir_path): 
      ... 
    except PermissionError: 
     pass 

赶上PermissionError(当您尝试访问您没有权限到一个文件时引发错误)。您可以选择将其记录下来,或者像我在这里所做的那样忽略它。

0

正如@coldspeed所示,除非您的代码没有写入任何内容(您可能会用错误代码杀死您的系统),否则使用“sudo”,或者用try: ... except PermissionError包含相关代码并进行适当的错误日志记录。

相关问题