【问题标题】:Python arguments not being parsed when passed传递时未解析 Python 参数
【发布时间】:2012-03-21 10:33:12
【问题描述】:

我现在有以下代码:

parser = argparse.ArgumentParser(prog='Tempus')
ex_group = parser.add_mutually_exclusive_group(required=True)

## Miscellaneous but needed args
parser.add_argument('--mode', type=str, choices=['xml', 'text', 'term'], 
                        dest='mode', required=True, help='export mode')
parser.add_argument('-v', '--verbose', action='store_true', 
                       dest='verbose', help='enable verbose/debug mode')

# Input methods
ex_group.add_argument('--i', action='store_true', 
                       dest='interactive', help='enter interactive mode')
ex_group.add_argument('--p', metavar='I', type=float, 
                       dest='integer', help='percentage to use')

args = parser.parse_args()

但是,当我以任何顺序传递所需的参数时,我得到了错误:

Tempus: error: argument --mode is required

即使我通过了那个论点,也会发生这种情况。有什么办法可以解决这个问题?

谢谢!

编辑:谢谢大家,我得到了它的工作,结果是在不传递参数之前没有先指定python exe就执行它。

另一个简单的问题:是否可以在我的代码中创建一个类似于 --mode 的参数,但让一个附加参数传递给其中一个选项?

例如,有一个命令,如 --input,它可以接受两个参数“整数”和“交互式”,但我也可以将一个数字传递给 --input 整数命令?所以命令将显示: --input integer 23 例如?这可能吗?

【问题讨论】:

  • 出现此错误的示例调用是什么?
  • 为我工作:python test.py --mode text --i.
  • @Xion: tempus_args.py --mode term --i
  • 也适合我。 Callum,您确定您发布的代码与您调用的确切脚本中的代码相同吗?
  • 这是完全相同的代码。这是full script

标签: python argparse


【解决方案1】:

试试 1. 解析前打印 sys.argv 或 2. 在脚本中显式添加参数,如http://docs.python.org/dev/library/argparse.html#parsing-arguments

因此,您可以排除关于 argparse 实际看到哪些参数的任何混淆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2016-12-12
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多