gpt4 book ai didi

python - python 中的通用命令行生成器

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:33 25 4
gpt4 key购买 nike

Python 中有通用的命令行生成器吗?我的意思是类似于 argparse 但具有相反功能的东西。 argparse 允许您定义各种参数,然后将给定的命令行字符串解析为这些参数的值。我需要一些可以让你定义各种参数的东西,比如 argparse,但是给定一个参数字典,值对将生成一个命令行字符串。

示例:

    gencmdline = CmdlineGenerator()
gencmdline.add_argument('-f', '--foo')
gencmdline.add_argument('bar')
gencmdline.add_argument('phi')
gencmdline.gen_cmdline(phi='hello', bar=1, foo=2) returns:
"1 hello -f 2"
gencmdline.gen_cmdline(phi='hello', bar=1) returns:
"1 hello"
gencmdline.gen_cmdline(phi='hello', foo=2) raise exception because positional argument bar is not specified.

最佳答案

我假设您想使用类似call 的方式并向命令传递一组关键字。

from subprocess import call

def get_call_array(command=command,**kwargs):
callarray = [command]
for k, v in self.kwargs.items():
callarray.append("--" + k)
if v:
callarray.append(str(v))
return callarray

call(get_call_array("my_prog",height=5,width=10,trials=100,verbose=None))

#calls: my_prog --height 5 --width 10 --trials 100 --verbose

当然,如果你有一本字典,包含你所有的参数,那就更简单了:

def get_call_array_from_dict(command,options_dict):
callarray=[command]
for k,v in options_dict.items():
callarray.append("--" + str(k))
if v:
callarray.append(str(v))
return callarray

关于python - python 中的通用命令行生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31326842/

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