gpt4 book ai didi

python - 是否可以使用 Python 的 argparse 重建命令行?

转载 作者:行者123 更新时间:2023-12-04 13:19:38 25 4
gpt4 key购买 nike

我有一个 Python 脚本,它读取一个包含其他工具的命令行调用的文件。我想在调用该工具之前修改此调用的选项。例如,我可能会转换:

my_util --input file1.txt --option1 red --option2 blue

...到这个:
my_util --input file1_001.txt --option1 red --option3 green

(更准确地说,我会将参数作为列表进行处理。)

我认为使用 argparse 模块将是最简单的方法:我可以解析参数,根据需要更改、添加或删除选项,然后重建命令行。

但是我怎么做最后一步呢?鉴于 Namespace parse_args() 返回的对象,我可以轻松地重建命令行选项列表,例如可以传递给 subprocess.Popen() ?

最佳答案

Namespace 对象只是一个简单的对象子类,因此您可以使用 vars 将值作为字典取出。 :

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> args = parser.parse_args(['--foo', 'BAR'])
>>> vars(args)
{'foo': 'BAR'}

或者您可以直接分配给一个类并将参数作为类变量获取:
>>> class C(object):
... pass
...
>>> c = C()
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.parse_args(args=['--foo', 'BAR'], namespace=c)
>>> c.foo
'BAR'

使用这些结构中的任何一个来测试/替换参数并将结果传递给 Popen 都相当容易。 .

关于python - 是否可以使用 Python 的 argparse 重建命令行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14823363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com