argparse 不检查位置参数

2024-06-05

我正在创建一个脚本,它使用 argparse 接受位置参数和可选参数。我已经阅读了 Doug 的教程和 python 文档,但找不到答案。

parser = argparse.ArgumentParser(description='script to run')
parser.add_argument('inputFile', nargs='?', type=argparse.FileType('rt'),
parser.add_argument('inputString', action='store', nargs='?') 
parser.add_argument('-option1', metavar='percent', type=float, action='store')
parser.add_argument('-option2', metavar='outFile1', type=argparse.FileType('w'),
parser.add_argument('-option3', action='store', default='<10',
args = parser.parse_args()
# rest of script.... blah blah

正如你所看到的,我想要 2 个位置参数和 3 个可选参数。但是,当我尝试在终端中运行它时,它不会检查位置! 如果我尝试: python script.py inputfile 当它找不到 inputString 的值时,它将正常运行并在脚本中途输出错误。 如果我尝试: python script.py xxx ;输出是:

usage script.py [-h] [-option1] [-option2] [-option3]

谁能解释为什么它不检查位置参数?


你的问题是你指定nargs='?'. From 文档: http://docs.python.org/dev/library/argparse.html#nargs

'?'。如果可能的话,将从命令行使用一个参数,并将其作为单个项目生成。如果不存在命令行参数,则将生成默认值。

如果您省略nargs='?'那么就需要参数,并且argparse如果未提供,将显示错误。如果满足以下条件,则消耗单个参数:action='store'(默认)。

您还可以指定nargs=1;区别在于,这会生成一个包含一项的列表,而不是项本​​身。有关更多使用方法,请参阅文档nargs.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

argparse 不检查位置参数 的相关文章

随机推荐

  • 使用 JPA 标准的“不在”约束

    我正在尝试写一个NOT IN约束使用JPA Criteria 我尝试过这样的事情 builder not builder in root get property1 虽然我知道这行不通 在上面的语法中 如何添加集合 列表property1会
  • 在 MVC Razor 视图中使用旧版 ASP.NET ASCX 用户控件

    我正在尝试实现一个使用 WebForm ascx 用户控件 非 MVC 的 MVC Razor Layout cshtml 页面 我这样做是基于 Scott Hansleman 文章 将 Razor 视图和 WebForms 母版页与 AS
  • 连接到 Elasticsearch Heroku 数据库

    我已经在 Heroku 上使用 Bonsai elasticsearch 插件设置了一个入门帐户 我正在尝试通过 Java 应用程序连接到它 但似乎无法通过 Transport Client 或 Elasticsearch 文档页面上解释的
  • 如何正确关闭 Node.js Express 服务器?

    我需要在收到回调后关闭服务器 auth github callback网址 与平常一样HTTP API http nodejs org docs latest api http html关闭 服务器目前支持server close call
  • boost::interprocess 准备好迎接黄金时间了吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个由内存映射文件支持的线
  • 异步不适用于控制器的抽象超类方法

    我有一个BaseRestControllerRest 控制器扩展的类 它有一个我想异步运行的方法 public abstract class BaseRestController Async someThreadPoolTaskExecut
  • Firebase Auth:此应用无权使用 Firebase

    我的应用程序 build gradle compile com firebaseui firebase ui auth 2 3 0 compile com google firebase firebase auth 11 0 4 compi
  • Session_set_save_handler 未设置

    我在设置 session set save handler 时遇到问题 我将 php ini 配置为 session handler user 这个简单的测试失败了 Define custom session handler if sess
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • Airflow log_id 格式错误

    我正在使用 Airflow v2 2 3 和apache airflow providers elasticsearch 2 1 0 在 Kubernetes 中运行 我们的日志会自动发送到 Elasticsearch v7 6 2 我在
  • Python 中“is”运算符的语义是什么?

    如何is运算符确定两个对象是否相同 它是如何工作的 我找不到它的记录 来自文档 http docs python org reference datamodel html 每个对象都有一个身份 一个类型 和一个值 对象的身份 一旦发生就永远
  • 如何使用多个Auth组件?

    我使用用户模型将身份验证组件配置为 管理页面 但现在 我还想为客户端创建 配置身份验证 我尝试 重写 inialize This is in my ClientsController php public function initiali
  • 在 R 中编写多重积分函数

    为了将以下内容转换为函数 我想知道如何用 R 代码编写以下二重积分 bar x mu 假设pi0 and pi1以向量化方式实现函数 pi 0 和 pi 1 可能的解决方案是 integral lt function n mu s pi0
  • 创建本身异步的自定义管道

    我创建了一个自定义管道 用于从 API 检索文本内容 如下所示 Pipe name apiText export class ApiTextPipe implements PipeTransform constructor private
  • 在两个 .cpp 文件之间定义全局变量 [重复]

    这个问题在这里已经有答案了 如何在 A cpp 和 B cpp 之间共享 全球化 bool 变量 其中它们都不包含其他 h 文件 他们有其他联合头文件 但彼此没有 我可以在这些共享标头中定义全局变量吗 Thanks 我可以在这些共享标头中定
  • 如何在Python中手动对数字列表进行排序?

    规格 Ubuntu 13 04 Python 3 3 1 背景 Python的初学者 遇到了这个 手动排序 问题 我被要求做的事情 让用户输入 3 个数值并将它们存储在 3 个不同的变量中 不使用列表或排序算法 手动将这 3 个数字从小到大
  • 具有查找功能的优先级队列 - 最快的实现

    我正在考虑实现一个带有附加要求的优先级队列 一个查找 搜索功能 它将告诉一个项目是否在队列中的任何位置 所以函数将是 insert del min 和 find 我不确定是否应该使用堆或自平衡二叉搜索树 看来 PQ 通常是用堆实现的 但我想
  • EntityFrameworkCore - 启用 DbContextPool 时如何注入 IPrincipal

    我有一个 aspnet core MVC 应用程序 我需要注入IPrincipal当前请求 以便我知道谁是当前登录的用户 我跟着this http davidpine net blog principal architecture chan
  • BODMAS系统的加法和减法

    我一直在构建一个简单的公式计算器 但一直被加法和减法困扰 正如您应该知道的 在计算方程时 您遵循优先级算术规则 即括号 顺序 幂函数 除法 乘法 加法和减法 问题是加法和减法具有相同的优先级 因此您可以从左到右阅读 到目前为止 这是我的代码
  • argparse 不检查位置参数

    我正在创建一个脚本 它使用 argparse 接受位置参数和可选参数 我已经阅读了 Doug 的教程和 python 文档 但找不到答案 parser argparse ArgumentParser description script t