我必须在作为条件执行python脚本时传递多个参数。
下面是我的代码,但我必须在多个条件下执行相同的步骤。
客户端1和2有4个不同的文件存在数据和元数据错误。
所以,如果我通过python.py client1,data,date
然后,我的函数应该选择第一个文件名client1\u data\u error\u file\u 1并创建一个数据帧并插入数据库
import pandas as pd
from operator import itemgetter
import glob
import bz2
import csv
import import argparse
client1_data_error_file_1=10_client1_AAAAAA_data_error_date.bz2
client1_metadata_error_file_1=10_client1_AAAAAA_metadata_error_date.bz2
client2_data_error_file_1=20_client2_AAAAAA_data_error_date.bz2
client2_metadata_error_file_1=10_client1_AAAAAA_metadata_error_date.bz2
def load_errors_database(argument,client,error):
header = ["filedate", "errorcode", "errorROEID", "ROEID", "type", "rawrecord", "filename"]
data = []
req_cols = itemgetter(0, 1, 2, 3, 4, 9, 10)
for error_filename in glob.glob("*.bz2"):
with bz2.open(error_filename, "rt", encoding="utf-8") as f_error_file:
csv_input = csv.reader(f_error_file, skipinitialspace=True)
for orig_row in csv_input:
row = req_cols(orig_row)
data.append([row[0], row[1], row[2], row[3], row[4], ",".join(orig_row), error_filename])
df = pd.DataFrame(data, columns=header)
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database)
cursor = cnxn.cursor()
# Insert Dataframe into SQL Server:
for index, row in df.iterrows():
cursor.execute("INSERT INTO dbo.error_table (filedate, errorcode, errorROEID, ROEID, type, rawrecord, filename) values(?,?,?,?,?,?,?)", row.filedate, row.errorcode, row.errorROEID, row.ROEID, row.type, row.rawrecord, row.filename)
cnxn.commit()
cursor.close()
我如何通过这些条件?不一定是功能。 当我从终端执行python代码时,我希望
python_error_file.py client1, data,date
现在,它应该选择第一个文件并执行必要的步骤。如果我通过
python_error_file.py client2, metadata,date
它应该选择第四个文件并执行所需的步骤。 所有四个文件的步骤都相同。我只需要在执行代码时将它们作为参数传递
有人能帮我吗
argparse
是您使用简单语法创建手动命令行工具的朋友。以下是一个帮助您的代码片段:用法:
相关问题 更多 >
编程相关推荐