gpt4 book ai didi

python - os.walk onerror 的函数返回到哪里?如何向 onerror 函数调用添加更多参数?

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:18 28 4
gpt4 key购买 nike

我正在编写一个程序来使用 os.walk 遍历文件系统。

我的 for 循环使用 os.walk,onerror 函数如下:

def walk_error(os_error):

return(os_error)

def main():

for root, dirs, files in os.walk('/var/spool/cron/', onerror=walk_error):

print(root, dirs, files)

onerror 函数的返回语句去哪里了?我如何引用它?我当然可以在我的 walk_error 函数中执行 print(os_error) 并且它会正常工作。但我想将该错误保存在某处。

比如说,我如何将一个列表作为参数添加到错误处理函数中,以便我可以将该错误附加到失败目录的列表中?

例如:

def walk_error(os_error, list_of_errors):
list_of_errors.append(os_error)

那太棒了!但不幸的是,您似乎无法在 onerror 调用中使用多个参数进行这种类型的函数调用。

或者我如何将返回值分配给变量以在我的主函数中执行此操作? os_error 正在“返回”,但它不会返回到 os.walk 生成的 3 个元组中的任何一个。有没有办法在 main() 中引用该返回值?

如何在这里进行更复杂的错误处理?

最佳答案

使用内部函数(又名闭包):

def main():

list_of_errors = []

def walk_error(os_error):
list_of_errors.append(os_error)

for root, dirs, files in os.walk('/var/spool/cron/', onerror=walk_error):
print(root, dirs, files)

关于python - os.walk onerror 的函数返回到哪里?如何向 onerror 函数调用添加更多参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53788737/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com