如何使用在运行时更改的python命令行参数?

2024-09-30 08:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python程序,它修改另一个程序的配置文件,然后调用该程序。另一个程序使用配置文件来定义一个几何图形,然后对不同的几何元素应用特定的电压。我希望能够在命令行上指定要应用于命名配置元素的电压。例如,配置文件可以指定一个名为“base”的元素的电压为1伏,另一个名为“LeftDot”的元素的电压为1.4伏。我想要一个类似于以下命令的命令:

$ python myprogram.py --config configfile1.txt --base 1.0 --LeftDot 1.4

但是对于另一个配置文件,没有定义“base”和“LeftDot”,而是使用“LeftNode”和“LowerGate”:

^{pr2}$

在查看argparse和optparse文档时,我看不到一种方法可以查找在运行时之前我不知道其名称的命令行参数(当我打开配置文件时,我可以很容易地看到哪些元素需要对它们应用电压,但只在运行时)。有没有一种方法可以告诉argparse将所有的它不认识我自己功能的东西?谢谢你的帮助。在


Tags: 方法命令行py命令程序config元素base
1条回答
网友
1楼 · 发布于 2024-09-30 08:24:15

整个配置在运行时完成。这些示例使用字符串常量作为名称,但您不受其约束。在

首先加载配置,然后当您拥有所有元素时,只需循环这些元素并将它们注册为参数:

parser = argparse.ArgumentParser(....)

for element in configuration_elements:
     parser.add_argument(' ' + element, type=float, ...)

然后解析命令行。在

或者,argparse.ArgumentParser()也作为partial parsing mode;只需调用parser.parse_known_args()来解析argparse所知道的一切,它将返回一个命名空间对象(它可以解析的所有选项)以及它不知道如何处理的其余参数:

^{pr2}$

在上面的例子中,.parse_known_args()不知道如何处理' spam'和{}参数,因此它返回给您自己的代码来处理。已处理 foo 42参数。在

相关问题 更多 >

    热门问题