Py学习  »  Python

将参数传递给python exe

Anoop M • 3 年前 • 1238 次点击  

我正在尝试使用下面的代码创建一个python可执行文件。

import pandas as pd
import pyodbc as po
import os
#variables
server = 'DESKTOP-9B94UPJ' 
database = 'DB1' 
username = 'etluser' 
password = 'password' 
rawfile_directory='E:\\Projects\\Ebay\\ETLApp\\'
cnxn = po.connect('DRIVER={SQL 
Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

df=pd.read_csv(rawfile_directory+"SPSS_Files\\"+filename,usecols=var_filteredCols)

cnxn = po.connect('DRIVER={SQL 
Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
     sql_stmt = "INSERT INTO "+var_table+" ("+var_DBCols+") values("+var_placeholder+")"
     cursor = cnxn.cursor()
     cursor.fast_executemany = True
     cursor.executemany(sql_stmt, df.values.tolist())
           # print(f'{len(df)} rows inserted to the {MY_TABLE} table')
     cursor.commit()
     cursor.close()
     cnxn.close()

我使用pyinstaller创建了一个exe

pyinstaller --onefile etl.py

我想在运行时将数据库凭据和文件夹路径传递给exe。有哪位专家能给我建议如何做到这一点?提前谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132834
文章 [ 1 ]  |  最新文章 3 年前
lemonhead
Reply   •   1 楼
lemonhead    4 年前

如果您不想创建一个使用用户界面提取凭据的GUI程序,那么您可能需要进行命令行操作。通过传入参数,然后使用 sys.argv

例如:

import sys
if len(sys.argv) < 6:
    raise ValueError("Not enough commandline arguments! Please run with <executable> <server> <database> <username> <password> <folder_path>")

server = sys.argv[1]
database = sys.argv[2]
username = sys.argv[3]
password = sys.argv[4]
rawfile_directory= sys.argv[5]

然后,您可以使用以下命令从命令提示符运行可执行文件

C:\> <EXEfilename> DESKTOP-9B Ebay_CX etluser password E:\Projects\Ebay\ETLApp

如果你想要一个更华丽、更漂亮的命令行界面,请考虑使用 argparse 因此,在如何使用可执行文件的不同参数方面,您可以为最终用户提供更多帮助,例如使用说明、-options而不是args、-help-support等等。

您还可以在运行时请求用户输入,例如在使用 input() 但这不太标准

另见: after compiling python program, how to input arguments