【问题标题】:python argparse option string not complete but value is assignedpython argparse选项字符串不完整但已分配值
【发布时间】:2022-10-15 01:22:22
【问题描述】:

Argparse 似乎没有检查整个选项字符串来分配值。这是一个错误还是有意的?如果这是有意的,这有什么用例?

使用 python3 test.py 运行以下程序-测试“测试”

import argparse
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-testurl', dest='testurl')
    args = parser.parse_args()
    print(args)

输出是

命名空间(testurl='testing')

【问题讨论】:

  • 来自文档,allow_abbrev - Allows long options to be abbreviated if the abbreviation is unambiguous. (default: True)

标签: python argparse


【解决方案1】:

我们可以在选项中使用双破折号 (--) 并在解析器中使用 allow_abbrev=False 来强制解析 [reference: argument parser documentation] 的确切参数:

import argparse
if __name__ == '__main__':
    parser = argparse.ArgumentParser(allow_abbrev=False)
    parser.add_argument('--testurl', dest='testurl')
    args = parser.parse_args()
    print(args)

输出:

> python3 df_reg.py --test "testing" 
usage: df_reg.py [-h] [--testurl TESTURL]
df_reg.py: error: unrecognized arguments: --test testing

> python3 df_reg.py --testurl "testing"
Namespace(testurl='testing')

参考:

【讨论】:

    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2020-02-12
    • 2014-09-17
    相关资源
    最近更新 更多