Python tarfile模块在解压时覆盖现有文件 - 如何禁用?
有没有办法让 tarfile.extractall
(API)在提取文件时不覆盖已经存在的文件?我说的“防止”是指最好能在即将覆盖文件时抛出一个异常。现在的情况是,它会默默地覆盖这些文件。
3 个回答
0
我遇到了类似的情况,我只想在所有文件还没有被提取的情况下进行提取。我使用下面这个函数来检查 archive
是否已经被提取到 extract_dir
这个目录里:
from pathlib import Path
import tarfile
def is_extracted(archive, extract_dir):
tar = tarfile.open(archive)
filenames = tar.getnames()
return all([(Path(extract_dir) / f).exists() for f in filenames])
0
你有没有试过把 tarfile.errorlevel
设置为 2?这样的话,非致命的错误就会被抛出来。我猜覆盖文件的情况就属于这种错误。
4
你可以用 tarfile.getnames
这个方法来检查一下结果,看看和现有的文件对比一下,如果有问题就报错。