在pyinstaller中添加2个数据文件,并在脚本编写的函数中将它们用作变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在pyinstaller中添加2个数据文件,并在脚本编写的函数中将它们用作变量相关的知识,希望对你有一定的参考价值。

我的目标是通过转换.py或.ipynb文件,使用pyinstaller创建一个可执行文件。我希望用户在计算机上运行exe文件时输入其excel文件路径(2个文件)。 exe然后应运行我编写的python代码,该代码将它们输入的数据文件作为我的函数参数输入以进行数据处理,并使用此应用程序将我的函数输出(操纵的csv文件)返回给最终用户。

def manipulated_data(df,df5,df10):
    df2=df.copy()


    df4=df2.pivot_table(columns=df2[df2.columns[6]],index=df2[np.r_[df2.columns[0:6],df2.columns[9:17],df2.columns[18:]]],values=df2[df2.columns[7:9]],fill_value='')

    df4=df4.reset_index()

    #Combining multi-index names
    df4.columns = [' '.join(col).strip() for col in df4.columns.values]




    df7=df5.melt(id_vars=df5[df5.columns[0:5]],value_vars=df5[df5.columns[6:15]],value_name='Values')

    df7=df7.replace('Zone 9`','Zone 9')

    ind=df7.variable.unique()

    df8=df7.pivot_table(columns=df7[df7.columns[4:6]],
                    index=df7[df7.columns[0:4]]
                    , values=df7.columns[6],aggfunc=('first'),fill_value='')

    df8=df8.reindex(ind,axis=1,level=1)

    df8.columns = [' '.join(col).strip() for col in df8.columns.values]

    df8.reset_index(inplace=True)

    df9=pd.merge(df4,df8,how='inner',on=['Store ID','Store Name','State'])

    df9.fillna('',inplace=True)

    dfcoles=pd.concat([df9,df10], axis=0,ignore_index=False,sort=False)

    dfcoles.fillna('',inplace=True)

    coles_ind=df10.columns

    dfcoles=dfcoles.reindex(coles_ind,axis=1)

    return dfcoles

df_trial=pd.read_csv('C:/Users/Abdul.Qavi/Downloads/Day 14 data/Part 3.csv',keep_default_na=False)

df_part4=pd.read_csv('C:/Users/Abdul.Qavi/Downloads/Day 14 data/Part 4.csv',keep_default_na=False)

df_coles=pd.read_csv('C:/Users/Abdul.Qavi/Downloads/Coles Service SF.csv',keep_default_na=False)
 ##This file wouldn't be entered by the user. It would always be a part of the script.

dfx=manipulated_data(df_trial,df_part4,df_coles)
答案

基于我对问题的理解

  • 您希望用户输入2个csv文件的路径
  • 读取文件并将其作为参数传递
  • 使用操作数据()函数执行一些操作
  • 返回/保存输出-以csv文件格式表示。

一般版本看起来像这样-

app.py

import pandas as pd
import os

def manipulated_data(df1,df2):
    #perform operations using df1 and df2
    #......
    #......
    #for example - 
    df_coles = pd.concat([df1,df2], axis=0,ignore_index=False,sort=False) 
    return df_coles

# get file paths from the user
path1 = input("enter path for the 1st file")
path2 = input("enter path for the 2nd file")

#read the csv files
data1 = pd.read_csv(path1)
data2 = pd.read_csv(path2)

#execute manipulated_data() function-
df_final = manipulated_data(data1,data2)

#create an output directory
if not os.path.exists('output'):
    os.makedirs('output')

#save csv file in the output directory or your prefered location
df_final.to_csv('./output/manipulated_data1.csv') 

# Open excel to display the csv file
os.system("start excel output/manipulated_data1.csv")

# To prevent the app from closing abruptly -
input("Press enter to continue...")

然后创建应用程序-

pyinstaller app.py

附带说明-您可以使用os.getcwd()从当前目录读取文件或将文件保存到当前目录。

以上是关于在pyinstaller中添加2个数据文件,并在脚本编写的函数中将它们用作变量的主要内容,如果未能解决你的问题,请参考以下文章

使用 onefile 选项在 Pyinstaller 中添加数据文件

在EXE中使用PyInstaller打包数据文件

pyinstaller命令封装程序并添加图标

有人用 Pyinstaller 成功地将数据文件捆绑到一个文件中吗?

如何在 pyinstaller 中添加静态(html、css、js 等)文件以创建独立的 exe 文件?

如何在 pyinstaller 中添加静态(html、css、js 等)文件以创建独立的 exe 文件?