我正在学习Python 3并尝试编写一个复制目录的脚本。我正在使用shutil.copytree
。从Python文档中可以看出:
如果发生异常,则会引发错误并列出原因。
此异常收集在多文件操作期间引发的异常。对于copytree(),exception参数是一个3元组的列表(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])
要查看回溯和异常信息,您有以下几种选择:
顺便说一下,你应该避免把它称为数组。这个特殊的异常对象有list的tuples,而arrays是一个完全不同的数据结构。
您可以使用OSError来处理它:
import shutil
def removeDirectory(directory):
try:
shutil.rmtree(directory)
except OSError as err:
print(err)
removeDirectory('PathOfDirectoryThatDoesntExist')
输出:
[Errno 2]没有这样的文件或目录:'。/ PathOfDirectoryThatDoesntExist'