我有一个Gooey GUI,用户可以在其中输入单个文件,其中包含有关将折旧的资产的一些信息。但是,折旧方法因国家/地区而异。因此,我还添加了一个下拉按钮,以便用户可以选择国家/地区。
这是我到目前为止(不包括进口商品)的代码:
@Gooey(program_name="DEPRECIATION")
def parse_args():
parser = GooeyParser()
parser.add_argument('Fixed_Assets_File',
action='store',
widget='FileChooser',
help="Excel file with all fixed assets to depreciate")
parser.add_argument('Country',
widget='Dropdown',
choices=['Germany','France','Norway',
'Poland','UK','NL','Sweden',
'Russia','Spain',],
help="Choose the country")
parser.add_argument('Output_File_Name',
action='store',
help="Name of the output file with .xlsx")
args = parser.parse_args()
return args
def country_selection(mapping_file):
if 'Germany' in args.Country:
mapping = pd.read_excel("germany_depreciation.xlsx")
elif 'France' in args.Country:
mapping = pd.read_excel("france_depreciation.xlsx")
elif 'Norway' in args.Country:
mapping = pd.read_excel("norway_depreciation.xlsx")
elif 'Poland' in args.Country:
mapping = pd.read_excel("poland_depreciation.xlsx")
elif 'UK' in args.Country:
mapping = pd.read_excel("uk_depreciation.xlsx")
elif 'NL' in args.Country:
mapping = pd.read_excel("nl_depreciation.xlsx")
elif 'Sweden' in args.Country:
mapping = pd.read_excel("sweden_depreciation.xlsx")
elif 'Russia' in args.Country:
mapping = pd.read_excel("russia_depreciation.xlsx")
elif 'Spain' in args.Country:
mapping = pd.read_excel("spain_depreciation.xlsx")
if __name__ == '__main__':
args = parse_args()
assets = args.Fixed_Assets_File
country = args.Country
print("You chose", country)
您可能已经注意到,每个国家/地区都有一个主文件,其中包含所有必要的信息以及资产的不同类别。我已经有要为公式/折旧计算实现的代码。我可以将其复制并粘贴到每个if语句中,但这会使代码非常长。
是否可以告诉Gooey / Python根据用户在下拉按钮中选择的国家/地区选择要导入的文件?
例如:如果他们选择波兰,则所有其他主文件都将被忽略,仅导入波兰并将其定义为“映射”
ps:当我说主文件时,是指从excel导入的文件,其格式为:nameofthecountry_depreciation.xlsx
答案 0 :(得分:0)
您可以创建将国家/地区与相应主文件链接的字典。
mapping = pd.read_excel(country_mapping[args.Country])
然后您可以致电:
country_selection()
然后,您可以删除功能country_mapping
。
您还可以使用country_mapping.keys()
格通过调用//Express body parser
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.json());
//Express Session
app.use(session({
secret: 'secret',
resave: true,
saveUninitialized: true,
cookie: {
secure: false
}
}));
// Passport config
require('./config/passport')(passport);
//Passport Middleware
app.use(passport.initialize());
app.use(passport.session());
在解析器中填充国家/地区选择。