【问题标题】:Passing argument with ">=" to argparse将带有 ">=" 的参数传递给 argparse
【发布时间】:2017-10-10 10:35:44
【问题描述】:

我想知道是否可以传递大于或等于 python 脚本的参数,然后使用 argparse 解析所有参数?例如:

python foo.py -a bob -d >= 12

使用> 符号我总是会收到错误消息:

foo.py: error: argument -d/--min number : expected at least one argument

有效的输入可以是=3>=3

【问题讨论】:

  • 你不能把它放在引号里吗?喜欢-d ">= 12"
  • 这会很混乱,脚本正在被另一个应用程序调用,并且很难让该应用程序在参数周围添加引号。

标签: python arguments argparse


【解决方案1】:

问题不在于 argparse,而是 > 在命令行上有特殊含义(将输出引导到文件中)。您需要确保该值被 shell 视为纯字符串:

python foo.py -a bob -d '>=' 12

或:

python foo.py -a bob -d '>= 12'

(取决于>=12 应该是两个参数还是一个。)

【讨论】:

  • 有没有不带引号的方法?脚本被另一个应用程序调用?
  • 如果您的应用程序正在执行一个包含裸 > 的 shell 命令,而不希望它意味着“将标准输出重定向到文件”,那么它做错了。如果您希望它具有纯字符“>”的含义,它必须被引用。
  • 哇!谢谢你,你绝对正确。完全忘记了管道,因此默认情况下它会添加引号
猜你喜欢
  • 2016-04-08
  • 2016-09-08
  • 2018-06-27
  • 2013-11-30
  • 2018-10-17
  • 2018-02-25
  • 2018-11-19
  • 2011-11-12
  • 2018-03-07
相关资源
最近更新 更多