赞
踩
之前学习的时候安装库太多太杂,写程序给自己运行时候尚能理清楚,现在需要给同事写一个简单的excel自动化程序,用pyinstaller打包时发现因为装的库太多打包速度太慢,于是需要用创建虚拟环境来解决。
本项目主要学习python虚拟环境的创建、pyinstaller的打包基础操作和pandas的分列功能操作
需求:将一个.xlsx文件中,按照表头为“航站”的列进行拆分,每个航站单独保存为一个csv文件,导出的csv文件名为{航站}.csv,同时里面的数据删掉“航站”列,保留其他列。
程序很简单,代码如下
- import pandas as pd
- import os
-
- def split_excel_to_csv(input_file):
- output_path = "航站拆分output"
- if not os.path.exists(output_path):
- os.makedirs(output_path)
-
- df = pd.read_excel(input_file)
- grouped_point = df.groupby([df['航站']])
- for name_point, group in grouped_point:
- group = group.drop('航站', axis=1)
- group.to_csv(f'{output_path}/{name_point[0]}.csv', index=False)
-
-
- if __name__ == "__main__":
- input_file = '202403-销售汇总.xlsx'
- split_excel_to_csv(input_file)
为了方便同事自己使用,需要将其打包为一个exe文件,当把一个xlsx文件拖入该exe文件时,将在同一个目录下生成“航站拆分output”的文件夹并将结果保存在里面。
python -m venv myenv # 创建虚拟环境
并将当前的vscode解释器设置为虚拟环境
myenv\Scripts\activate # 激活环境
激活后前面会有虚拟环境文件夹名字,检查pip list
可以看到目前环境没有装其他库,为了运行修改后的代码,需要安装pandas、openpyxl和pyinstaller库
- import pandas as pd
- import os
- import sys
-
- def split_excel_to_csv(input_file):
- output_path = "航站拆分output"
- if not os.path.exists(output_path):
- os.makedirs(output_path)
-
- df = pd.read_excel(input_file)
- grouped_point = df.groupby([df['航站']])
- for name_point, group in grouped_point:
- group = group.drop('航站', axis=1)
- group.to_csv(f'{output_path}/{name_point[0]}.csv', index=False)
-
-
- if __name__ == "__main__":
- if len(sys.argv) > 1:
- input_file = sys.argv[1]
- split_excel_to_csv(input_file)
- else:
- print("请拖入一个xlsx文件到这个exe文件上。")
在虚拟环境文件夹下运行cmd,激活虚拟环境
把代码脚本放在虚拟环境文件夹里,在虚拟环境下使用pyinstaller将脚本打包成exe
打包完成
打包完成后,exe文件在同文件下的dist文件夹中。
测试表格如下:
将xlsx文件拖入exe文件:
拆分成功:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。