创建和解压压缩包

这篇博客介绍了如何使用Python的zipfile模块来操作压缩包,包括读取压缩包内文件、处理中文文件名、读取文件信息、解压单个和所有文件、解压带密码的压缩包以及创建和向已有压缩包添加文件。通过示例代码展示了具体实现方法。
摘要由CSDN通过智能技术生成

读取压缩包内文件
import zipfile
with zipfile.ZipFile(‘压缩包.zip’,‘r’) as zip1:
print(zip1.namelist())
#文件名含有中文会出现乱码

处理压缩包内的中文
with zipfile.ZipFile(‘压缩包.zip’,‘r’) as zip2:
for file_name in zip2.namelist():
print(file_name.encode(‘cp437’).decode(‘gbk’))

读取压缩包内文件信息
with zipfile.ZipFile(‘压缩包.zip’,‘r’) as zip3:
for file_name in zip2.namelist():
info=zip3.getinfo(file_name)
new_filename=file_name.encode(‘cp437’).decode(‘gbk’)
print(new_filename,info.file_size,info.compress_size)
#compress_size为压缩后的文件大小

将压缩包内单个文件解压出来
with zipfile.ZipFile(‘压缩包.zip’,‘r’) as zip4:
zip4.extract(‘file.txt’) #zip.extract(文件名,解压位置),默认为目录位置
中文乱码解决方法(先获取正确的编码文字及乱码文字,再重命名)
with zipfile.ZipFile(‘压缩包.zip’,‘r’) as zip4:
zip4.extract(‘乱码.txt’)

将所有文件提取出来
with zipfile.ZipFile(‘压缩包.zip’,‘r’) as zip4:
zip4.extractall() #zip.extractall(path=‘解压位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里提供一个使用PyQt5创建UI界面进行解压缩和查找指定文件的示例程序: ```python import os import zipfile from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout, QLabel, QLineEdit, QPushButton, QTextEdit, QFileDialog class MainWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建界面布局 hbox1 = QHBoxLayout() hbox1.addWidget(QLabel('Zip文件路径:')) self.zip_path_edit = QLineEdit() hbox1.addWidget(self.zip_path_edit) self.choose_zip_btn = QPushButton('选择') self.choose_zip_btn.clicked.connect(self.choose_zip_file) hbox1.addWidget(self.choose_zip_btn) hbox2 = QHBoxLayout() hbox2.addWidget(QLabel('解压缩到:')) self.extract_folder_edit = QLineEdit() hbox2.addWidget(self.extract_folder_edit) self.choose_extract_folder_btn = QPushButton('选择') self.choose_extract_folder_btn.clicked.connect(self.choose_extract_folder) hbox2.addWidget(self.choose_extract_folder_btn) hbox3 = QHBoxLayout() hbox3.addWidget(QLabel('查找文件名中包含:')) self.search_string_edit = QLineEdit() hbox3.addWidget(self.search_string_edit) self.search_btn = QPushButton('查找') self.search_btn.clicked.connect(self.search_files) hbox3.addWidget(self.search_btn) self.result_edit = QTextEdit() vbox = QVBoxLayout() vbox.addLayout(hbox1) vbox.addLayout(hbox2) vbox.addLayout(hbox3) vbox.addWidget(self.result_edit) self.setLayout(vbox) self.setWindowTitle('Zip文件解压缩和查找') self.show() def choose_zip_file(self): # 选择Zip文件 file_name, _ = QFileDialog.getOpenFileName(self, '选择Zip文件', '', 'Zip文件 (*.zip)') if file_name: self.zip_path_edit.setText(file_name) def choose_extract_folder(self): # 选择解压缩文件夹 folder_name = QFileDialog.getExistingDirectory(self, '选择解压缩文件夹') if folder_name: self.extract_folder_edit.setText(folder_name) def search_files(self): zip_file_path = self.zip_path_edit.text() extract_folder = self.extract_folder_edit.text() search_string = self.search_string_edit.text() # 验证输入的路径和字符是否合法 if not os.path.isfile(zip_file_path): self.result_edit.append('Zip文件路径无效') return if not os.path.isdir(extract_folder): self.result_edit.append('解压缩文件夹路径无效') return if not search_string: self.result_edit.append('请输入要查找的字符串') return # 打开Zip文件并解压缩 with zipfile.ZipFile(zip_file_path, 'r') as zip_file: zip_file.extractall(extract_folder) self.result_edit.append('Zip文件已解压缩到: ' + extract_folder) # 遍历Zip文件内的所有文件 for file_name in zip_file.namelist(): # 如果文件名中包含指定字符 if search_string in file_name: # 打开文件并读取内容 with zip_file.open(file_name) as file: content = file.read() # 将文件内容显示在界面上 self.result_edit.append('在文件 ' + file_name + ' 中找到字符串:') self.result_edit.append(content.decode()) def closeEvent(self, event): # 窗口关闭时清除解压缩文件夹 extract_folder = self.extract_folder_edit.text() if os.path.isdir(extract_folder): for file_name in os.listdir(extract_folder): file_path = os.path.join(extract_folder, file_name) if os.path.isfile(file_path): os.remove(file_path) elif os.path.isdir(file_path): os.rmdir(file_path) os.rmdir(extract_folder) if __name__ == '__main__': app = QApplication([]) window = MainWindow() app.exec_() ``` 该程序使用了PyQt5来创建UI界面,并提供了选择Zip文件、选择解压缩文件夹和查找指定字符的功能。在解压缩Zip文件时,程序会将文件解压缩到指定文件夹中,然后遍历Zip文件内的所有文件,查找文件名中包含指定字符的文件,并显示文件内容。程序还会在窗口关闭时清除解压缩文件夹。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值