os.walk onerror 参数的问题
Issue with os.walk onerror argument
我到处搜索,但找不到关于 os.walk(onerror) 如何工作的解释。
os.walk 默认忽略 listdir() 错误,但我至少需要收到警报,最好是导致此错误的目录路径。我应该如何设置这个参数?
感谢您的帮助。
错误处理程序应该是可调用的。它将使用一个参数调用,即异常实例。
def walk_error_handler(exception_instance):
print("uh-oh!") # you probably want to do something more substantial here..
for root, dirs, files in os.walk(dirname, onerror=walk_error_handler):
...
os.walk
默认情况下忽略错误是设计使然。这允许遍历继续遍历其他目录,例如,在遍历中遇到的一个子目录由于权限不足而无法列出。
在处理异常实例时,exception_instance.args
和type(exception_instance)
中可能包含您感兴趣的所有信息。由于它是 OSError
(或子类型),因此 errno
将是一个有用的属性。
您可以与 stdlib errno
module. For example, permission denied is errno.EACCES
(13) 的常量进行比较。如果您尝试将 /root
列为普通用户,就会出现此错误。
我到处搜索,但找不到关于 os.walk(onerror) 如何工作的解释。
os.walk 默认忽略 listdir() 错误,但我至少需要收到警报,最好是导致此错误的目录路径。我应该如何设置这个参数?
感谢您的帮助。
错误处理程序应该是可调用的。它将使用一个参数调用,即异常实例。
def walk_error_handler(exception_instance):
print("uh-oh!") # you probably want to do something more substantial here..
for root, dirs, files in os.walk(dirname, onerror=walk_error_handler):
...
os.walk
默认情况下忽略错误是设计使然。这允许遍历继续遍历其他目录,例如,在遍历中遇到的一个子目录由于权限不足而无法列出。
在处理异常实例时,exception_instance.args
和type(exception_instance)
中可能包含您感兴趣的所有信息。由于它是 OSError
(或子类型),因此 errno
将是一个有用的属性。
您可以与 stdlib errno
module. For example, permission denied is errno.EACCES
(13) 的常量进行比较。如果您尝试将 /root
列为普通用户,就会出现此错误。