2024-05-16 18:47:52 发布
网友
我有一个包装openssh客户端二进制文件的Python脚本,需要以相同的方式解析参数。我在用argparse。你知道吗
对于ssh,这意味着连接到主机,以“a”登录,然后运行“ls”。你知道吗
ssh -la host ls
这意味着连接到主机并运行“ls-la”:
ssh host ls -la
argparse将这些视为相同的。有没有一种惯用的方法告诉argparse可选参数必须在位置参数之前?你知道吗
使用nargs=argparse.REMAINDER:
nargs=argparse.REMAINDER
import argparse p = argparse.ArgumentParser() p.add_argument('-l', ' login') p.add_argument('host') p.add_argument('cmd', nargs=argparse.REMAINDER) print p.parse_args('-la server ls'.split()) print p.parse_args('server ls -la'.split())
结果:
Namespace(cmd=['ls'], host='server', login='a') Namespace(cmd=['ls', '-la'], host='server', login=None)
我认为您试图完成的任务非常符合argparse子命令的概念。看看:https://docs.python.org/3/library/argparse.html#sub-commands
argparse
使用
nargs=argparse.REMAINDER
:结果:
我认为您试图完成的任务非常符合
argparse
子命令的概念。看看:https://docs.python.org/3/library/argparse.html#sub-commands相关问题 更多 >
编程相关推荐