如何将文件作为argparse的超参数传递

0 投票
2 回答
30 浏览
提问于 2025-04-14 17:34

我正在尝试复现一个来自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'}"

撰写回答