gpt4 book ai didi

python-3.x - 在 Python 中正确实现 Shutil.Error

转载 作者:行者123 更新时间:2023-12-04 19:02:48 24 4
gpt4 key购买 nike

我正在学习 Python 3 并尝试编写一个复制目录的脚本。我正在使用 shutil.copytree .从 Python 文档中它说:

If exception(s) occur, an Error is raised with a list of reasons.

This exception collects exceptions that are raised during a multi-file operation. For copytree(), the exception argument is a list of 3-tuples (srcname, dstname, exception).



example他们这样做:
 except Error as err:
errors.extend(err.args[0])

这是我的脚本:
def copyDirectory(src, dest):

errors = []

try:
shutil.copytree(src, dest)
except Error as err:
errors.extend(err.args[0])

source="C:/Users/MrRobot/Desktop/Copy"
destination="C:/Users/MrRobot/Desktop/Destination"

copyDirectory(source, destination)
moveDirectory(destination,"I:/")

问题:
  • 如何正确捕获使用 shutil.copytree 时可能发生的异常? (假设我上面的脚本不正确)?
  • 那么您将如何查看发生的错误,我是否会遍历 errors大批?
  • 最佳答案

    捕获异常时,您需要包含模块名称:

    except shutil.Error as err:

    或显式导入:
    from shutil import copytree, Error

    # the rest of your code...

    try:
    copytree(src, dest)
    except Error as err:
    errors.extend(err.args[0])

    要查看回溯和异常信息,您有几个选项:
  • 不要捕获异常。您的脚本将被暂停并打印所有错误信息。
  • 如果您希望脚本继续,那么您实际上是在询问 this SO question 的副本。 .我会引用这个问题;接受的答案写得很好。

  • 顺便说一句,您应该避免将其称为数组。这个特殊的异常对象有一个 listtuples , 和 arrays是完全不同的数据结构。

    关于python-3.x - 在 Python 中正确实现 Shutil.Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596449/

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