【发布时间】:2021-10-04 00:14:35
【问题描述】:
使用此代码,我从 zip 文件中提取文件,但如果存在与我在不同 zip 文件中提取的文件同名的文件,它会覆盖此文件。我希望通过在末尾添加“_1”来提取此文件。你能帮我解决这个问题吗?
import zipfile, os, shutil
myZip = zipfile.ZipFile('abc.zip')
directory_to_extract_to = "place of extraction path"
for file in myZip.filelist:
if file.filename.endswith('.txt'):
source = myZip.open(file)
target = open(os.path.join(directory_to_extract_to, os.path.basename(file.filename)), "wb")
with source, target:
shutil.copyfileobj(source, target)
例如; OK.txt >>> 提取新的同名文件 >>> OK_1.txt >>> OK_2.txt
【问题讨论】:
-
最好的办法是在解压缩之前重命名压缩文件,然后在
ZipFile对象上使用extractall方法。 -
这并没有解决。
-
为什么不能解决它?您的问题是文件名重复...
-
我有很多 zip 文件,我使用这段代码提取这些 zip 文件中的文本文件并将它们放入一个文件中。某些 zip 文件可以具有相同的文本文件名。如果提取了一个名为“okay.txt”的文件,并且在另一个 zip 文件中有一个名为“okay.txt”的文件,我希望这次输出为“okay_1.txt”。这段代码不会这样做,它会更新“okay.txt”文件。您的解决方案,因此我无法将其与此问题完全联系起来。
-
这能回答你的问题吗? renaming the extracted file from zipfile