gpt4 book ai didi

python - 使用 shutil.copytree 复制权限被拒绝的文件时处理异常

转载 作者:行者123 更新时间:2023-11-28 23:01:50 36 4
gpt4 key购买 nike

考虑以下目录树

Work--->subdir1--->File1
| |
| ---->File2
|
-->subdir2--->File3

存在另一个类似的目录树

Gold--->subdir1--->File1
| |
| ---->File2
|
-->subdir2--->File3

我必须编写一个脚本来将 Work 目录复制到另一个位置。为此,我一直在使用 shutil.copytree

问题是,有时(但不总是)我可能没有访问某些文件的权限,例如 Work 目录中的 File2,并且将获得以下错误:

Traceback (most recent call last):
File "C:\Script.py", line 81, in <module>
shutil.copytree(source_loc,dest_loc)
File "C:\Python32\lib\shutil.py", line 239, in copytree
raise Error(errors)
shutil.Error: [('C:\\Work\\subdir1\\File2',
'C:\\Dest\\subdir1\\File2',
"[Errno 13] Permission denied: 'C:\\Work\\subdir1\\File2'")]

在这种情况下,我将不得不从 Gold 目录中复制那些相应的文件。有没有一种方法可以通过异常自动从 Gold 目录复制相应的文件?像这样说:

try:
shutil.copytree(r'C:\Work',r'C:\Dest')
except:
<< Copy Inaccessible Files from Gold >>

我最初考虑使用 os.walk 来单独复制文件。这样,每当我遇到特定文件的异常时,我就能够从 Gold 复制相应的文件。有没有更好的办法?

最佳答案

您可以从 shutil.Error 中获取复制失败的文件列表。从阅读源代码来看, shutil.Error 包含 (src, dst, why) 三元组。你可以这样做:

try:
shutil.copytree(srcdir, dstdir)
except shutil.Error, exc:
errors = exc.args[0]
for error in errors:
src, dst, msg = error
# Get the path to the file in Gold dir here from src
shutil.copy2(goldsrc, dst)

关于python - 使用 shutil.copytree 复制权限被拒绝的文件时处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10493490/

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