我的Python中有一项功能,可以每天备份特定目录。备份步骤包括压缩目录。我正在使用shutil.make_archive
来压缩目录。
但是,当我压缩的目录包含我无权访问的文件时,我现在面临一个权限问题。
在这种情况下,我只想跳过该文件,然后继续压缩剩余的文件。我如何实现这一目标?
我搜索了SO并遇到了这个answer,它显示了如何使用zipfile
库压缩目录。在这种情况下,我可以检查特定文件是否抛出异常并忽略它。
这是唯一的方式还是有更简单的方法?
我的代码(只使用 shutil.make_archive ):
shutil.make_archive(filename, "zip", foldername)
我为我修改的答案中的代码:
def zipdir(path, ziph):
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
for file in files:
try:
ziph.write(os.path.join(root, file))
except PermissionError as e:
continue
if __name__ == '__main__':
zipf = zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('tmp/', zipf)
zipf.close()
请告诉我是否有更简单/有效的解决方案。