UiPath-压缩解压缩文件

缘起

前几天归纳了一下PowerShell压缩与解压缩文件的实现方法(点击可通过传送门)。因为主业使用的UiPath官方是没有相关Package的,而且有时甲方爸爸的确会有压缩与解压缩的需求,所以把在UiPath中的实现原理一并整理下来:

原理

总的来说UiPath是基于.net的,压缩文件相关操作调用了System.IO.Compression中的ZipArchiveZipFile。这里的实现方法已经很类似手打代码了,不是那么“RPA”哈哈哈。

压缩文件

使用的是ZipArchive的CreateEntryFromFile方法,需注意赋值相应变量时使用的ZipArchiveMode为Create
下面是实现方法截图,毕竟UiPath主打可视化开发,所以。。。截图代码不全,所以模块我已经上传到我的文档,第一次上传,不太会用,文档名是Compression1.xaml,有需要的朋友可自行下载,注意调试时修改Arguments:

  • zipPath代表希望生成的压缩文件的全路径加名字
  • filepath代表希望压缩的文件全路径加名字
    在这里插入图片描述

解压缩文件

使用的是ZipFile的ExtractToDirectory方法,简单粗暴。文档名是Decompression1.xaml,有需要的朋友可自行下载,注意调试时修改Arguments:

  • zipPath代表希望读取的压缩文件的全路径加名字
  • filepath代表希望解压缩后文件全路径
    在这里插入图片描述

公众号

刚刚开通公众号,名叫柚点技巧,感兴趣的朋友可以添加关注,方便交流。另外本文中的示例文件可以在公众号回复关键字直接下载。
在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
这里提供一个使用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文件内的所有文件,查找文件名中包含指定字符的文件,并显示文件内容。程序还会在窗口关闭时清除压缩文件夹。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值