pandas搭配Gooey、pyinstaller"/>
pandas搭配Gooey、pyinstaller
pandas搭配Gooey、pyinstaller
安装指令
pip install pyinstaller
pip install gooey
pip install pandas
# 下载过慢添加阿里源
Gooey
小案例
单程序
控件名 | 控件类型 |
---|---|
FileChooser | 文件选择器 |
MultiFileChooser | 文件多选器 |
DirChooser | 目录选择器 |
MultiDirChooser | 目录多选器 |
FileSaver | 文件保存 |
DateChooser | 日期选择 |
TextField | 文本输入框 |
Dropdown | 下拉列表 |
Counter | 计数器 |
CheckBox | 复选框 |
RadioGroup | 单选框 |
Textarea | 富文本 |
from gooey import Gooey
from gooey import GooeyParser@Gooey(program_name="Test_GUI")
def gui_main():parser = GooeyParser(description="Test_GUI")parser.add_argument("Parser", widget="TextField")args = parser.parse_args()print(args)
多程序
from gooey import Gooey
from gooey import GooeyParser@Gooey(program_name="TEST_GUI", language="chinese")
def gui_main():parser = GooeyParser(description="TEST_GUI")sublist_parser = parser.add_subparsers(dest="RESULT") # 创建一个可生成多 parser的 subparsers对象prs1 = sublist_parser.add_parser("test1") # 第一个子parserprs1.add_argument("test_name1", widget="Dropdown", metavar="测试", choices=["SUCCSEE", "FAIL"])prs2 = sublist_parser.add_parser("test2") # 第二个子parserprs2.add_argument("test_name2", metavar="下拉框", widget="Dropdown", choices=["1", "2"], default="1")# 'test_name1' 名称 args.test_name2# metavar 备注,# widget 属性值# choices 下来选择项# default 默认值args = parser.parse_args()print(args)if args.RESULT == "test1": # 判断是执行哪个parserif args.test_name1 == "SUCCSEE": # 判断parser下参数输出print("success: ",args.test_name1)else:print("fail: ",args.test_name1)if args.RESULT == "test2":if args.test_name2 == "PASS":print("1:", args.test_name2)else:print("2:", args.test_name2)if __name__ == '__main__':gui_main()
pandas
csv、xlsx、xls去重、更改文件后缀格式
class PandasExcel:def __init__(self):# 当前时间,当前日期self.now_datetime = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")# 处理excel中的csv,去重、更改文件后缀格式def read_csv_deduplication(self, enter_type, excel_path, save_address, header, file_name, deduplication, type_name, encode_format):"""excel的xlsx处理文件:param excel_path: excel文件路径:param save_address: 保存文件路径【目录路径】:param header: 标头,开始行、第几行开始:param file_name: 文件名称:param deduplication: 是否去重:param type_name: 输出的文件类型:param encode_format: 编码格式:return:"""try:# 保存文件路径save_address_all = save_address + '\\' + file_name + '_' + str(self.now_datetime) + f'.{type_name}'print(f'{datetime.datetime.now()} 保存文件中...', flush=True)# 判断输入类型if enter_type == 'csv':# 读取excel数据 csvcsv_data = pd.read_csv(excel_path, encoding=encode_format, header=header-1) if deduplication == False else pd.read_csv(excel_path, encoding=encode_format, header=header-1).drop_duplicates()csv_data.to_csv(save_address_all, index=False,encoding=encode_format) if type_name == 'csv' else csv_data.to_excel(save_address_all,index=False,encoding=encode_format)elif enter_type == 'xlsx' or enter_type == 'xls':# 读取excel数据 xlsx xlscsv_data = pd.read_excel(excel_path, header=header - 1) if deduplication == False else pd.read_excel(excel_path, header=header - 1).drop_duplicates()csv_data.to_csv(save_address_all, index=False) if type_name == 'csv' else csv_data.to_excel(save_address_all, index=False)else:print(f'{datetime.datetime.now()} 输入类型有误', flush=True)print(f'{datetime.datetime.now()} 处理完成...', flush=True)except Exception as e:raise Exception('文件编码错误,请更改编码格式为:gbk or utf-8') if 'gbk' in e else print(f'{datetime.datetime.now()} 程序运行错误:请联系开发人员,并给予错误截图...', flush=True)
多表合一
def read_merge_deduplication(self, excel_path, file_name, save_address, enter_type, output_type, header):# 获取文件夹folder_address = pathlib.Path.cwd().joinpath(excel_path)# 多个表格数据添加到listfolder_table_data_list = []for file in folder_address.iterdir():if (file.match(f'*{enter_type}') and enter_type == 'csv'):folder_table_data_list.append(pd.read_csv(file, header=header - 1))elif (file.match(f'*{enter_type}') and enter_type == 'xlsx') or (file.match(f'*{enter_type}') and enter_type == 'xls'):folder_table_data_list.append(pd.read_excel(file, header=header - 1))else:print(f'{datetime.datetime.now()} 遇到不是xlsx/xls/csv文件:%s!!!' % file, flush=True)# 处理数据table_datas = pd.concat(folder_table_data_list)# 保存文件路径save_address_all = save_address + '\\' + file_name + '_' + str(self.now_datetime) + f'.{output_type}'print(f'{datetime.datetime.now()} 保存文件中...', flush=True)table_datas.to_csv(save_address_all, index=False) if output_type == 'csv' else table_datas.to_excel(save_address_all, index=False)# print(f'保存成功,文件地址:{save_address_all}')print(f'{datetime.datetime.now()} 处理完成...', flush=True)
多表合一多sheet
def read_multi_deduplication(self, excel_path, file_name, save_address, enter_type, header):# 拼接文件名称save_excel = os.path.join(save_address, f'{file_name}_{self.now_datetime}.xlsx')# 获取目录folder_address = pathlib.Path.cwd().joinpath(excel_path)# 迭代目录for indexs, file in enumerate(folder_address.iterdir()):file_name = file.parts[-1].split('.')[0]if enter_type in str(file):if enter_type == 'csv':print(f'{datetime.datetime.now()} 读取成功:{file}', flush=True)csv_xlsx_data = pd.read_csv(file, header=header - 1)else:print(f'{datetime.datetime.now()} 读取成功:{file}', flush=True)csv_xlsx_data = pd.read_excel(file, header=header - 1)if indexs == 0: csv_xlsx_data.to_excel(save_excel, index=False, sheet_name=file_name)else:writer = pd.ExcelWriter(save_excel, mode='a')csv_xlsx_data.to_excel(writer, index=False, sheet_name=file_name, engine='xlsxwriter')writer.save()writer.close()else:print(f'{datetime.datetime.now()} 文件不正确:{file}', flush=True)print(f'{datetime.datetime.now()} 处理完成...', flush=True)
多sheet拆分多表
def read_split_deduplication(self, excel_path, save_address, output_type, header):if 'xlsx' in str(excel_path) or 'xls' in str(excel_path):print(f'{datetime.datetime.now()} 读取文件中...', flush=True)contents = pd.read_excel(excel_path, sheet_name=None, header=header-1) # #sheet_name=None就会把所有的sheets读入内存for key in contents:save_address_all = os.path.join(save_address, f'{key}.{output_type}')contents[key].to_csv(os.path.join(save_address_all), index=False) if output_type == 'csv' else contents[key].to_excel(os.path.join(save_address_all), index=False)else:print(f'{datetime.datetime.now()} 该文件不是xlsx/xls,请确保文件后缀格式正确!!!', flush=True)print(f'{datetime.datetime.now()} 处理完成...', flush=True)
EXCEL完成封装
import os, json, random, requests, re, datetime, time, pathlib, sys, codecs
import pandas as pdclass PandasExcel:def __init__(self):# 当前时间,当前日期self.now_datetime = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")# 处理excel中的csv,去重、更改文件后缀格式def read_csv_deduplication(self, enter_type, excel_path, save_address, header, file_name, deduplication, type_name, encode_format):"""excel的xlsx处理文件:param excel_path: excel文件路径:param save_address: 保存文件路径【目录路径】:param header: 标头,开始行、第几行开始:param file_name: 文件名称:param deduplication: 是否去重:param type_name: 输出的文件类型:param encode_format: 编码格式:return:"""try:# 保存文件路径save_address_all = save_address + '\\' + file_name + '_' + str(self.now_datetime) + f'.{type_name}'print(f'{datetime.datetime.now()} 保存文件中...', flush=True)# 判断输入类型if enter_type == 'csv':# 读取excel数据 csvcsv_data = pd.read_csv(excel_path, encoding=encode_format, header=header-1) if deduplication == False else pd.read_csv(excel_path, encoding=encode_format, header=header-1).drop_duplicates()csv_data.to_csv(save_address_all, index=False,encoding=encode_format) if type_name == 'csv' else csv_data.to_excel(save_address_all,index=False,encoding=encode_format)elif enter_type == 'xlsx' or enter_type == 'xls':# 读取excel数据 xlsx xlscsv_data = pd.read_excel(excel_path, header=header - 1) if deduplication == False else pd.read_excel(excel_path, header=header - 1).drop_duplicates()csv_data.to_csv(save_address_all, index=False) if type_name == 'csv' else csv_data.to_excel(save_address_all, index=False)else:print(f'{datetime.datetime.now()} 输入类型有误', flush=True)print(f'{datetime.datetime.now()} 处理完成...', flush=True)except Exception as e:raise Exception('文件编码错误,请更改编码格式为:gbk or utf-8') if 'gbk' in e else print(f'{datetime.datetime.now()} 程序运行错误:请联系开发人员,并给予错误截图...', flush=True)# 多表合一def read_merge_deduplication(self, excel_path, file_name, save_address, enter_type, output_type, header):# 获取文件夹folder_address = pathlib.Path.cwd().joinpath(excel_path)# 多个表格数据添加到listfolder_table_data_list = []for file in folder_address.iterdir():if (file.match(f'*{enter_type}') and enter_type == 'csv'):folder_table_data_list.append(pd.read_csv(file, header=header - 1))elif (file.match(f'*{enter_type}') and enter_type == 'xlsx') or (file.match(f'*{enter_type}') and enter_type == 'xls'):folder_table_data_list.append(pd.read_excel(file, header=header - 1))else:print(f'{datetime.datetime.now()} 遇到不是xlsx/xls/csv文件:%s!!!' % file, flush=True)# 处理数据table_datas = pd.concat(folder_table_data_list)# 保存文件路径save_address_all = save_address + '\\' + file_name + '_' + str(self.now_datetime) + f'.{output_type}'print(f'{datetime.datetime.now()} 保存文件中...', flush=True)table_datas.to_csv(save_address_all, index=False) if output_type == 'csv' else table_datas.to_excel(save_address_all, index=False)# print(f'保存成功,文件地址:{save_address_all}')print(f'{datetime.datetime.now()} 处理完成...', flush=True)# 多表合一多sheetdef read_multi_deduplication(self, excel_path, file_name, save_address, enter_type, header):# 拼接文件名称save_excel = os.path.join(save_address, f'{file_name}_{self.now_datetime}.xlsx')# 获取目录folder_address = pathlib.Path.cwd().joinpath(excel_path)# 迭代目录for indexs, file in enumerate(folder_address.iterdir()):file_name = file.parts[-1].split('.')[0]if enter_type in str(file):if enter_type == 'csv':print(f'{datetime.datetime.now()} 读取成功:{file}', flush=True)csv_xlsx_data = pd.read_csv(file, header=header - 1)else:print(f'{datetime.datetime.now()} 读取成功:{file}', flush=True)csv_xlsx_data = pd.read_excel(file, header=header - 1)if indexs == 0: csv_xlsx_data.to_excel(save_excel, index=False, sheet_name=file_name)else:writer = pd.ExcelWriter(save_excel, mode='a')csv_xlsx_data.to_excel(writer, index=False, sheet_name=file_name, engine='xlsxwriter')writer.save()writer.close()else:print(f'{datetime.datetime.now()} 文件不正确:{file}', flush=True)print(f'{datetime.datetime.now()} 处理完成...', flush=True)# 多sheet拆分多表def read_split_deduplication(self, excel_path, save_address, output_type, header):if 'xlsx' in str(excel_path) or 'xls' in str(excel_path):print(f'{datetime.datetime.now()} 读取文件中...', flush=True)contents = pd.read_excel(excel_path, sheet_name=None, header=header-1) # #sheet_name=None就会把所有的sheets读入内存for key in contents:save_address_all = os.path.join(save_address, f'{key}.{output_type}')contents[key].to_csv(os.path.join(save_address_all), index=False) if output_type == 'csv' else contents[key].to_excel(os.path.join(save_address_all), index=False)else:print(f'{datetime.datetime.now()} 该文件不是xlsx/xls,请确保文件后缀格式正确!!!', flush=True)print(f'{datetime.datetime.now()} 处理完成...', flush=True)
Gooey、pandas完整封装
import os, json, random, requests, re, datetime, time, pathlib, sys, codecs
import pandas as pd
from gooey import Gooey, GooeyParserclass PandasExcel:def __init__(self):# 当前时间,当前日期self.now_datetime = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")# 处理excel中的csv,去重、更改文件后缀格式def read_csv_deduplication(self, enter_type, excel_path, save_address, header, file_name, deduplication, type_name, encode_format):"""excel的xlsx处理文件:param excel_path: excel文件路径:param save_address: 保存文件路径【目录路径】:param header: 标头,开始行、第几行开始:param file_name: 文件名称:param deduplication: 是否去重:param type_name: 输出的文件类型:param encode_format: 编码格式:return:"""try:# 保存文件路径save_address_all = save_address + '\\' + file_name + '_' + str(self.now_datetime) + f'.{type_name}'print(f'{datetime.datetime.now()} 保存文件中...', flush=True)# 判断输入类型if enter_type == 'csv':# 读取excel数据 csvcsv_data = pd.read_csv(excel_path, encoding=encode_format, header=header-1) if deduplication == False else pd.read_csv(excel_path, encoding=encode_format, header=header-1).drop_duplicates()csv_data.to_csv(save_address_all, index=False,encoding=encode_format) if type_name == 'csv' else csv_data.to_excel(save_address_all,index=False,encoding=encode_format)elif enter_type == 'xlsx' or enter_type == 'xls':# 读取excel数据 xlsx xlscsv_data = pd.read_excel(excel_path, header=header - 1) if deduplication == False else pd.read_excel(excel_path, header=header - 1).drop_duplicates()csv_data.to_csv(save_address_all, index=False) if type_name == 'csv' else csv_data.to_excel(save_address_all, index=False)else:print(f'{datetime.datetime.now()} 输入类型有误', flush=True)print(f'{datetime.datetime.now()} 处理完成...', flush=True)except Exception as e:raise Exception('文件编码错误,请更改编码格式为:gbk or utf-8') if 'gbk' in e else print(f'{datetime.datetime.now()} 程序运行错误:请联系开发人员,并给予错误截图...', flush=True)# 多表合一def read_merge_deduplication(self, excel_path, file_name, save_address, enter_type, output_type, header):# 获取文件夹folder_address = pathlib.Path.cwd().joinpath(excel_path)# 多个表格数据添加到listfolder_table_data_list = []for file in folder_address.iterdir():if (file.match(f'*{enter_type}') and enter_type == 'csv'):folder_table_data_list.append(pd.read_csv(file, header=header - 1))elif (file.match(f'*{enter_type}') and enter_type == 'xlsx') or (file.match(f'*{enter_type}') and enter_type == 'xls'):folder_table_data_list.append(pd.read_excel(file, header=header - 1))else:print(f'{datetime.datetime.now()} 遇到不是xlsx/xls/csv文件:%s!!!' % file, flush=True)# 处理数据table_datas = pd.concat(folder_table_data_list)# 保存文件路径save_address_all = save_address + '\\' + file_name + '_' + str(self.now_datetime) + f'.{output_type}'print(f'{datetime.datetime.now()} 保存文件中...', flush=True)table_datas.to_csv(save_address_all, index=False) if output_type == 'csv' else table_datas.to_excel(save_address_all, index=False)# print(f'保存成功,文件地址:{save_address_all}')print(f'{datetime.datetime.now()} 处理完成...', flush=True)# 多表合一多sheetdef read_multi_deduplication(self, excel_path, file_name, save_address, enter_type, header):# 拼接文件名称save_excel = os.path.join(save_address, f'{file_name}_{self.now_datetime}.xlsx')# 获取目录folder_address = pathlib.Path.cwd().joinpath(excel_path)# 迭代目录for indexs, file in enumerate(folder_address.iterdir()):file_name = file.parts[-1].split('.')[0]if enter_type in str(file):if enter_type == 'csv':print(f'{datetime.datetime.now()} 读取成功:{file}', flush=True)csv_xlsx_data = pd.read_csv(file, header=header - 1)else:print(f'{datetime.datetime.now()} 读取成功:{file}', flush=True)csv_xlsx_data = pd.read_excel(file, header=header - 1)if indexs == 0: csv_xlsx_data.to_excel(save_excel, index=False, sheet_name=file_name)else:writer = pd.ExcelWriter(save_excel, mode='a')csv_xlsx_data.to_excel(writer, index=False, sheet_name=file_name, engine='xlsxwriter')writer.save()writer.close()else:print(f'{datetime.datetime.now()} 文件不正确:{file}', flush=True)print(f'{datetime.datetime.now()} 处理完成...', flush=True)# 多sheet拆分多表def read_split_deduplication(self, excel_path, save_address, output_type, header):if 'xlsx' in str(excel_path) or 'xls' in str(excel_path):print(f'{datetime.datetime.now()} 读取文件中...', flush=True)contents = pd.read_excel(excel_path, sheet_name=None, header=header-1) # #sheet_name=None就会把所有的sheets读入内存for key in contents:save_address_all = os.path.join(save_address, f'{key}.{output_type}')contents[key].to_csv(os.path.join(save_address_all), index=False) if output_type == 'csv' else contents[key].to_excel(os.path.join(save_address_all), index=False)else:print(f'{datetime.datetime.now()} 该文件不是xlsx/xls,请确保文件后缀格式正确!!!', flush=True)print(f'{datetime.datetime.now()} 处理完成...', flush=True)class Solution():@Gooey(program_name="Excel表格数据处理", language="chinese")def __init__(self):self.parser = GooeyParser()self.sublist_parser = self.parser.add_subparsers(dest="RESULT")self.args = Noneself.data_processing = PandasExcel()# 添加gui —— csvdef csv_gui_interface_middle(self):# 添加第一个parserparser = self.sublist_parser.add_parser("数据处理")# 添加保存文件类型 —— ["csv", "xlsx"]parser.add_argument("csv_enter_type", widget="Dropdown", metavar="输入类型", choices=["csv", "xlsx", "xls"], default='csv')# 添加选择程序—— ["默认", "去重"]parser.add_argument("csv_select", widget="Dropdown", metavar="选择程序", choices=["默认", "去重"], default="默认")# 添加开始行数 —— ['1', '2', '3', '4', '5', '6', '7', '8']parser.add_argument("csv_start_header", widget="Dropdown", metavar="开始行数",choices=['1', '2', '3', '4', '5', '6', '7', '8'], default='1')# 添加文件地址,默认 ./文件名称.csvparser.add_argument("csv_file_address", metavar="文件地址", widget="FileChooser", default='./文件名称.csv')# 添加文件名称,默认 _parser.add_argument("csv_text_field", metavar="文件名称", widget="TextField", default='_')# 添加文件目录地址, 默认 .parser.add_argument("csv_directory_address", metavar="输出目录", widget="DirChooser", default='.')# 选择编码格式 —— ['utf-8', 'gbk']parser.add_argument("csv_encoding_format", metavar="编码格式", widget="Dropdown", choices=['utf-8', 'gbk'],default='utf-8')# 添加保存文件类型 —— ["csv", "xlsx"]parser.add_argument("csv_select_type", widget="Dropdown", metavar="输出类型", choices=["csv", "xlsx"], default='csv')# self.args = self.parser.parse_args()# 添加gui —— 合并文件def merge_files_gui_interface_middle(self):# 添加第三个子parser merge 合并文件parser = self.sublist_parser.add_parser("多表合一")# 选择文件夹路径parser.add_argument('merge_folder_address', widget="DirChooser", metavar="输入目录", default='.')# 输入文件后缀类型parser.add_argument('merge_select', widget="Dropdown", metavar="输入类型", choices=["csv", "xlsx", "xls"], default="xlsx")# 添加开始行数 —— ['1', '2', '3', '4', '5', '6', '7', '8']parser.add_argument("merge_start_header", widget="Dropdown", metavar="开始行数",choices=['1', '2', '3', '4', '5', '6', '7', '8'], default='1')# 添加文件名称parser.add_argument("merge_text_field", widget="TextField", metavar="文件名称", default="_")# 输出文件后缀类型parser.add_argument("merge_output_type", widget="Dropdown", metavar="输出类型", choices=["csv", "xlsx", "xls"], default="xlsx")# 保存文件路径parser.add_argument("merge_directory_address", widget="DirChooser", metavar="输出目录", default=".")# 添加gui —— 多表合一多sheetdef multiple_worksheets_interface_middle(self):# 添加第三个子parser multiple 多表合一多sheetparser = self.sublist_parser.add_parser("多表合多sheet")# 选择文件夹路径parser.add_argument('multi_folder_address', widget="DirChooser", metavar="输入目录", default='.')# 输入文件后缀类型parser.add_argument('multi_select', widget="Dropdown", metavar="输入类型", choices=["csv", "xlsx", "xls"], default="xlsx")# 添加开始行数 —— ['1', '2', '3', '4', '5', '6', '7', '8']parser.add_argument("multi_start_header", widget="Dropdown", metavar="开始行数",choices=['1', '2', '3', '4', '5', '6', '7', '8'], default='1')# 添加文件名称parser.add_argument("multi_text_field", widget="TextField", metavar="文件名称", default="_")# 保存文件路径parser.add_argument("multi_directory_address", widget="DirChooser", metavar="输出目录", default=".")# 添加gui —— 多sheet拆分多表def split_files_gui_interface_middle(self):# 添加第四个子parser split 多sheet拆分多表parser = self.sublist_parser.add_parser("多sheet拆分多表")# 选择文件夹路径parser.add_argument('split_folder_address', widget="FileChooser", metavar="输入目录", default='./xlsx')# 输入文件后缀类型parser.add_argument('split_output_type', widget="Dropdown", metavar="输出类型", choices=["csv", "xlsx", "xls"],default="xlsx")# 添加开始行数 —— ['1', '2', '3', '4', '5', '6', '7', '8']parser.add_argument("split_start_header", widget="Dropdown", metavar="开始行数",choices=['1', '2', '3', '4', '5', '6', '7', '8'], default='1')# 保存文件路径parser.add_argument("split_directory_address", widget="DirChooser", metavar="输出目录", default=".")# 总gui —— projectdef gui_project(self):self.csv_gui_interface_middle()# self.xlsx_gui_interface_middle()self.merge_files_gui_interface_middle()self.multiple_worksheets_interface_middle()self.split_files_gui_interface_middle()self.args = self.parser.parse_args()def main(self):if sys.stdout.encoding != 'UTF-8':sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict')if sys.stderr.encoding != 'UTF-8':sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict')self.gui_project()print(f'{datetime.datetime.now()} '+ '—' * 11 + ' 执行开始 ' + '—' * 11, flush=True)# print(f'{datetime.datetime.now()} 处理完成...')if self.args.RESULT == '数据处理':self.data_processing.read_csv_deduplication(excel_path=self.args.csv_file_address, enter_type=self.args.csv_enter_type, header=int(self.args.csv_start_header),file_name=self.args.csv_text_field, save_address=self.args.csv_directory_address,deduplication=True, type_name=self.args.csv_select_type,encode_format=self.args.csv_encoding_format) if self.args.csv_select == '默认' else \self.data_processing.read_csv_deduplication(excel_path=self.args.csv_file_address, enter_type=self.args.csv_enter_type, header=int(self.args.csv_start_header),file_name=self.args.csv_text_field, save_address=self.args.csv_directory_address,deduplication=False, type_name=self.args.csv_select_type,encode_format=self.args.csv_encoding_format)# , encode_format=args.xlsx_encoding_formatelif self.args.RESULT == '多表合一':self.data_processing.read_merge_deduplication(excel_path=self.args.merge_folder_address, header=int(self.args.merge_start_header), file_name=self.args.merge_text_field, enter_type=self.args.merge_select, output_type=self.args.merge_output_type, save_address=self.args.merge_directory_address)elif self.args.RESULT == '多表合多sheet':self.data_processing.read_multi_deduplication(excel_path=self.args.multi_folder_address, file_name=self.args.multi_text_field, save_address=self.args.multi_directory_address, enter_type=self.args.multi_select, header=int(self.args.multi_start_header))elif self.args.RESULT == '多sheet拆分多表':self.data_processing.read_split_deduplication(excel_path=self.args.split_folder_address, header=int(self.args.split_start_header), output_type=self.args.split_output_type, save_address=self.args.split_directory_address)# print('—' * 18 + '执行结束' + '—' * 18)print(f'{datetime.datetime.now()} '+ '—' * 11 + ' 执行结束 ' + '—' * 11, flush=True)
pyinstaller
打包exe文件
# 简单打包
pyinstall -F xx.py# 去除黑色窗口
pyinstaller -F -w xx.py# 更改exe图标, ico图片后缀名称,图片需更改ico格式
pyinstaller -F -w -i xx.ico xx.py
更多推荐
pandas搭配Gooey、pyinstaller
发布评论