我用Python写了一个函数,可以读取.csv或.xls,并将其作为panda Dataframe 返回。根据传递的file_type,该函数使用pandas.read_csv()或pandas.read_excel()函数,但参数有一点不同。它可以正常工作,但我希望减少明显重复的代码。那么我该如何做才是最好的呢?
1.只有一个函数调用被动态更改为file_type变量定义的特定函数调用
1.基于同一变量动态更改随后调用的函数的参数?
这是我目前的代码。谢谢你的帮助。
def file_to_df(file_name, fields= None, file_type = None, encoding = None):
"""Read stock level from csv or xlsx file.Filter SKU and Qty.Return dataframe."""
if file_type == 'csv' or 'xls':
if file_type == 'csv':
data_frame = pd.read_csv(
file_name,
encoding = encoding,
converters={'Barcode':str,'Qty':int},
usecols=fields
)
elif file_type == 'xls':
data_frame = pd.read_excel(
file_name,
converters={'Barcode':str,'Qty':int},
usecols=fields
)
# Remove empty rows
data_frame.replace('', np_nan, inplace=True)
data_frame.dropna(axis=0, how='any', subset=None, inplace=True)
return data_frame
else:
print('no csv or xls filetype was handed to file_to_df')
对于参数,我尝试使用两个放入函数调用的元组。
2条答案
按热度按时间xkrw2x1b1#
您可以修改您的签名函数并使用keyword-only参数(PEP 3102)。然后,创建一个参数dict,添加您的固定参数(转换器),重命名一些参数(字段-〉usecols)并添加其他参数作为它:
rjee0c152#
不要传递必须Map到特定函数的字符串;只要传递正确的函数。