Python 两组参数
我喜欢gdb和lldb如何接受两组参数,一组用于gdb/lldb本身,另一组用于目标应用程序。例如:Python 两组参数,python,bash,arguments,command-line-interface,Python,Bash,Arguments,Command Line Interface,我喜欢gdb和lldb如何接受两组参数,一组用于gdb/lldb本身,另一组用于目标应用程序。例如: lldb /bin/ls -- -al -foo=bar 在双破折号'--'的左侧可以放置lldb参数,在右侧可以放置目标参数。有没有办法在我的Python脚本中读取两组这样的参数?是的!可以选择获取参数列表,其格式与您在sys.argv中看到的类似 import sys import argparse first_parser = argparse.ArgumentParser() fir
lldb /bin/ls -- -al -foo=bar
在双破折号'--'的左侧可以放置lldb参数,在右侧可以放置目标参数。有没有办法在我的Python脚本中读取两组这样的参数?是的!可以选择获取参数列表,其格式与您在sys.argv
中看到的类似
import sys
import argparse
first_parser = argparse.ArgumentParser()
first_parser.add_argument('arg1')
second_parser = argparse.ArgumentParser()
second_parser.add_argument('arg2')
first_args = []
second_args = []
double_dashed = False
for arg in sys.argv[1:]:
if arg == '--':
double_dashed = True
elif not double_dashed:
first_args.append(arg)
else:
second_args.append(arg)
print(first_parser.parse_args(first_args))
print(second_parser.parse_args(second_args))
这将打印出:
$ ./example.py one -- two
Namespace(arg1='one')
Namespace(arg2='two')
那么,只需拆分参数数组:
n=sys.argv.index('--');左=系统argv[:n];right=sys.argv[n+1://code>并在未找到--
时捕获值error。正如@4ae1e1所指出的,在我上面的评论中将sys.argv
替换为sys.argv[1://code>(最好创建另一个变量并使用它)@4ae1e1,追加是有效的。它需要恒定的平均时间(使用常见的双容量策略)。另外,完全不需要担心参数解析的性能。@4ae1e1。你为什么一直声称它效率低下?同样,它需要恒定的平均时间,就像切片一样。@4ae1e1:为了反驳你的错误主张,我现在的评论有什么问题吗?检查过了,可以用了,让我们看看。