python - Python解压缩并将“_”添加到新提取的文件中
问题描述
使用此代码,我从 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
解决方案
我相信这会回答你的问题:
import zipfile, os, shutil
myZip = zipfile.ZipFile('abc.zip')
directory_to_extract_to = "place of extraction path"
for i,file in enumerate(myZip.filelist):
if file.filename.endswith('.txt'):
if file.filename not in os.listdir(directory_to_extract_to):
path=os.path.join(directory_to_extract_to, os.path.basename(file.filename))
else:
path=os.path.join(directory_to_extract_to, os.path.basename(file.filename.replace(".txt",str(i)+".txt")))
source = myZip.open(file)
target = open(path, "wb")
with source, target:
shutil.copyfileobj(source, target)
我们在这里所做的是,如果找到该提取目录中的文件名,则在文件名中添加迭代编号,否则与您正在执行的操作相同。我们使用的是迭代编号,因此您可能无法在文件名中获得连续编号,但我相信它可以解决您的问题。
推荐阅读
- modelica - 如何在创建实例之前重新声明模型中的包?
- python - 在python中窗口未激活/最小化时是否可以使快捷方式工作?
- javascript - Java substr 在输入至少 2 个数字后检查和激活
- reactjs - 如何全局访问 App() 的属性(在 React App 中,来自 pyodide)
- visual-studio - 如何为我的 Azure SQL DB 创建 Azure DevOps Repos?
- python - 熊猫:将数据框的列从列表转换为字符串,并且字符串只有列表的唯一值
- typescript - 如何在 React-Native Fast-Image 组件 TypeScript 中不使用任何内容
- python - 端口扫描不会返回横幅
- c++ - 访问私有成员函数
- kotlin - 本地期末班
throwable 的问题:类 在科特林