如何将文件作为argparse的超参数传递
我正在尝试复现一个来自GitHub的流程。因为我的目标是复现,所以我不想修改代码。其中一个脚本要求将超参数以字典的形式传入,比如说:
-p {'param1' : 'p1', 'param1' : 'p2' ...}
这些参数是通过argparse来处理的。
我有一长串的参数。请问可以把这些超参数的字典放在一个文件里传入吗?
谢谢!
2 个回答
0
如果你不想对原来的脚本做任何修改,可以创建一个“包装脚本”。这个包装脚本会从一个JSON文件(我们叫它params.json)中读取参数,然后用这些参数来调用原来的脚本。
{
"param1": "p1",
"param2": "p2"
}
然后可以通过以下方式传递这些参数:
params=$(cat params.json)
python your_script.py -p "$params"
0
argparse
这个工具默认会把以@
开头的参数当作一个文件名来处理,它会从这个文件中读取更多的参数,每行一个。所以,如果你创建一个名为args.txt
的文件,里面包含了
-p
{'param1' : 'p1', 'param1' : 'p2' ...}
(假设“dictionary”确实是要作为一个整体参数传递)那么
script.py @args.txt
就相当于
script.py -p "{'param1': 'p1', 'param2': 'p2'}"