我正在使用shutil.copy将文件从一个位置复制到另一个位置。如果目标位置中已存在具有相同名称的文件,则通常可以并覆盖。但是,如果目标是只读的,则会抛出权限被拒绝错误。
处理这个问题最优雅的方法是什么?是否有另一个shutil函数可以处理权限问题,或者我必须检查我复制的文件的权限吗?
答案 0 :(得分:4)
喜欢
import os
import shutil
def my_super_copy(what, where):
try:
shutil.copy(what, where)
except IOError:
os.chmod(where, 777) #?? still can raise exception
shutil.copy(what, where)
答案 1 :(得分:1)
您无需检查权限。让OS告诉你有一个权限问题,然后处理它。我假设PermissionDeniedError是你得到的异常所以你的解决方案看起来像这样。
try:
shutil.copy(blah,blah,blah)
except PermissionDeniedError:
<Code for whatever you want to do if there arent sufficient permissions>