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

问题描述 投票:0回答:2

我正在尝试从 github 重现管道。由于想法是重现它,所以我不想更改代码。 Onde 脚本要求将超参数作为字典传递,如下所示

 -p {'param1' : 'p1', 'param1' : 'p2' ...}
等等。这些参数使用 argparse 进行处理。

我有一长串参数。是否可以将超参数字典作为文件传递?

谢谢!

python 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' ...}

(假设“字典”确实应该作为单个参数传递)然后

script.py @args.txt

应等于

script.py -p "{'param1': 'p1', 'param2': 'p2'}"
© www.soinside.com 2019 - 2024. All rights reserved.