Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两组参数_Python_Bash_Arguments_Command Line Interface - Fatal编程技术网

Python 两组参数

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

我喜欢gdb和lldb如何接受两组参数,一组用于gdb/lldb本身,另一组用于目标应用程序。例如:

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:为了反驳你的错误主张,我现在的评论有什么问题吗?检查过了,可以用了,让我们看看。