python argparse命名位置参数?

标签 python command-line-arguments argparse

有没有办法使python的argparse.ArgumentParser像python函数对待参数那样对待命令行参数?这样就可以不带名称来传递参数?

最佳答案

请参阅documentation中带有“integers”的示例。不要包含任何连字符,该参数将被视为位置参数。

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('first_supplied_argument', help='help')
>>> parser.add_argument('second_supplied_argument', help='help')
>>> args = parser.parse_args(['1', '2'])
Namespace(first_supplied_argument='1', second_supplied_argument='2')

根据评论进行编辑:

您是否可以提供位置参数和可选参数?我认为您仍然需要至少提供一个位置论证。
parser = argparse.ArgumentParser()
parser.add_argument('--first', help='help')
parser.add_argument('first', nargs='?', help='help')
parser.add_argument('--second', help='help')
parser.add_argument('second', nargs='?', help='help')

print parser.parse_args(['1', '2'])
print parser.parse_args(['1', '--second', '2'])
print parser.parse_args(['--first', '1', '--second', '2'])  # doesn't work
print parser.parse_args(['', '--first', '1', '--second', '2'])  # probably not what you want to do

输出:
Namespace(first='1', second='2')
Namespace(first='1', second='2')
Namespace(first=None, second=None)  # doesn't work
Namespace(first='1', second='2')

关于python argparse命名位置参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33051144/

相关文章:

python - 是否有任何理由使用 lambda 函数而不是列表理解?

python - APIView 上的 django 过滤器

batch-file - 读取批处理文件中参数的每个字符

testing - 是否存在用于测试命令行参数的既定标准?

python - 值错误:must start with a character '-'

python - 限制命令行选项的值

python - Scikit-Learn:如何处理不可排序的类型错误?

c++ - 枚举所有可能的带约束矩阵

java - 为什么 String[] args 没有像其他字符串数组一样进行初始化?

Python 参数解析 : type conversion of a list of default arguments