指定 Python argparse 输入参数的日期格式

2024-02-09

我有一个需要一些命令行输入的 Python 脚本,我正在使用argparse用于解析它们。我发现文档有点混乱,找不到检查输入参数格式的方法。我通过以下示例脚本解释了检查格式的含义:

parser.add_argument('-s', "--startdate", help="The Start Date - format YYYY-MM-DD ", required=True)
parser.add_argument('-e', "--enddate", help="The End Date format YYYY-MM-DD (Inclusive)", required=True)
parser.add_argument('-a', "--accountid", type=int, help='Account ID for the account for which data is required (Default: 570)')
parser.add_argument('-o', "--outputpath", help='Directory where output needs to be stored (Default: ' + os.path.dirname(os.path.abspath(__file__)))

我需要检查选项-s and -e用户输入的格式为YYYY-MM-DD。有没有一个选项argparse我不知道哪个能做到这一点?


Per 文档 https://docs.python.org/3/library/argparse.html#type:

The type的关键字参数add_argument()允许执行任何必要的类型检查和类型转换...的参数type可以是任何接受单个字符串的可调用对象。

你可以这样做:

def valid_date(s):
    try:
        return datetime.strptime(s, "%Y-%m-%d")
    except ValueError:
        msg = "not a valid date: {0!r}".format(s)
        raise argparse.ArgumentTypeError(msg)

然后用它作为type:

parser.add_argument(
    "-s", 
    "--startdate", 
    help="The Start Date - format YYYY-MM-DD", 
    required=True, 
    type=valid_date
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指定 Python argparse 输入参数的日期格式 的相关文章

随机推荐

  • 什么时候适合使用C作为面向对象语言?

    关于如何使用 C 来模拟面向对象的概念 有很多优秀的答案 仅举几例 C 具有抽象数据类型的双链表 https stackoverflow com questions 3274472 c double linked list with abs
  • 设置animationDidStopSelector:在UIView的动画委托上

    我认为在过去一年半的 iPhone 开发经验中我一直在做这个错误 我需要一些知识渊博的澄清 您可能知道也可能不知道 使用 UIView 属性可以很容易地设置动画beginAnimations forContext 方法 并用一个包装它com
  • 如何使用正则表达式来匹配不包含多个特定单词之一的字符串?

    如何使用正则表达式来避免匹配包含多个特定单词之一的字符串 例如 字符串不应包含以下单词test nor sample sample test 我的正则表达式在某些情况下会失败 1 this is a test case 2 this is
  • 使用定义的模式生成多个动态 ID 的函数

    我正在尝试创建一个函数来生成具有定义模式的多个动态 ID 我该怎么做 跟进 Vue js 如何使用定义的模式生成多个动态 ID https stackoverflow com q 49776146 8770366 Details 我正在创建
  • 如何将 Chromium 嵌入式框架 (CEF) 与 java 集成

    我想制作一个桌面应用程序来浏览网站 我不想制作浏览器 而是制作浏览器嵌入应用程序 我尝试过JavaFx但我发现了一些问题 例如缺少对插件的支持 例如 flash pdf 查看器等 经过大量搜索后 我发现了 Chromium Embedded
  • XML:如何将一个 xml 文件的内容加载到另一个文件中

    我只是希望能够从另一个 xml 文件动态写入 xml 文件的内容 A XML包含
  • Angular 6 中 ng2-file-upload 的进度条

    我想为我的文件上传创建一个进度条 我使用的上传是 https www npmjs com package ng2 file upload https www npmjs com package ng2 file upload 应用程序组件
  • 导航抽屉项目未注册点击事件

    我正在努力让导航抽屉项目注册并启动并意图进行新活动 抽屉打开正常并正确显示 但当我单击列表中的项目时没有任何反应 这是我的代码 取自谷歌教程 mTitle mDrawerTitle getTitle mTitles getResources
  • 快速将大型 2d 矩阵融合为 3 列 data.table

    我有一个大矩阵num 1 62410 1 48010 我想要一个长格式的 data table e g Var1 Var2 value 1 1 1 4227 786 2 2 1 4211 908 3 3 1 4197 034 4 4 1 4
  • Javascript 按空格分隔,但不按引号分隔

    目标是在空格处分割字符串 但不分割引号中的文本数据或将其与相邻文本分开 输入实际上是一个包含值对列表的字符串 如果 value 值包含空格 则将其括在引号中 我需要一个返回值对元素数组的函数 如下例所示 输入示例 a 0 b 1 moo f
  • 使用 UCLIBC 交叉编译 PHP

    这是一个转发 之前的帖子已关闭 移至 SERVERFAULT 并再次关闭 我认为这篇文章是一个有效的堆栈溢出问题 因为我认为它是由一些 automake 编译 链接错误引起的 这是一个编程问题而不是服务器管理问题 我会检查 uClibc 的
  • Monogame:WAV 无法播放

    这是 MonoGame 3 4 我通过 VS2013 使用它 我正在使用 mgcb 编译我的 WAV 文件 就像我的纹理一样 MGCB 工作正常 但是当涉及到使用SoundEffect类 它不播放任何内容 没有例外并且SoundEffect
  • CKEDITOR,在文本编辑器 onLoad 上自动聚焦

    有人知道如何在页面加载时自动聚焦于 CKEDITOR 文本区域吗 目前 用户必须先单击文本区域才能开始输入 像 Google 一样 我希望加载页面 并且用户可以立即开始输入 而无需单击文本区域 这是启动 CKEDITOR 的当前代码
  • webRTC - 视频导致互联网上的通话中断

    更新1 我尝试像这样改变视频约束 var mediaConstraints audio true We want an audio track video width min 160 ideal 320 max 640 height min
  • 浏览器使用哪种等宽字体?

    对于 CSS 如果您指定font family monospace 我的理解是浏览器选择其默认 首选等宽字体 如果这是正确的 您如何确定您的浏览器正在使用哪种等宽字体 可以使用 5 个通用系列 serif sans serif cursiv
  • 在 Notepad++ 中显示不匹配的 html 标签

    有没有办法在 Notepad 中突出显示不匹配的 HTML 标签 例如 如果我有以下 HTML 我想要标签以某种方式突出显
  • 由于一个或多个外键属性不可为空,因此无法更改该关系

    使用 EF 更新期间出现以下错误 操作失败 无法更改关系 因为一个或多个外键属性不可为空 当关系发生更改时 相关的外键属性将设置为空值 如果外键不支持空值 则必须定义新关系 必须为外键属性分配另一个非空值 或者必须删除不相关的对象 有没有g
  • Codeigniter 论坛集成

    我想将一个简单的论坛与 Codeigniter 应用程序集成 想知道是否有人有任何建议 干杯 Laurence 我会看一下普通论坛 有很多插件 开源 而且很容易集成 即 Codeigniter http vanillaforums org
  • 以编程方式设置 UIView 的自动调整大小掩码?

    我必须以编程方式设置 autoresizingMaskUIView 我不知道如何实现这个 要实现屏幕截图中的效果 您需要执行与 DrummerB 建议相反的操作 你想要一个固定的上边距 这样你就可以让其他每一面都变得灵活 如下所示 目标C
  • 指定 Python argparse 输入参数的日期格式

    我有一个需要一些命令行输入的 Python 脚本 我正在使用argparse用于解析它们 我发现文档有点混乱 找不到检查输入参数格式的方法 我通过以下示例脚本解释了检查格式的含义 parser add argument s startdat