背景:

之前学习的时候安装库太多太杂,写程序给自己运行时候尚能理清楚,现在需要给同事写一个简单的excel自动化程序,用pyinstaller打包时发现因为装的库太多打包速度太慢,于是需要用创建虚拟环境来解决。

本项目主要学习python虚拟环境的创建、pyinstaller的打包基础操作和pandas的分列功能操作

一个简单的excel单列拆分脚本

需求:将一个.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文件上。")

在虚拟环境将代码打包成exe文件

在虚拟环境文件夹下运行cmd,激活虚拟环境

把代码脚本放在虚拟环境文件夹里,在虚拟环境下使用pyinstaller将脚本打包成exe

打包完成

打包完成后,exe文件在同文件下的dist文件夹中。

测试表格如下:

将xlsx文件拖入exe文件:

拆分成功:

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐