当前位置: 首页 > 面试题库 >

指定输入参数argparse python的格式

白和泽
2023-03-14
问题内容

我有一个需要一些命令行输入的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并且-e用户输入的格式为YYYY-MM-DD。我不知道argparse中有一个选项可以完成此任务。


问题答案:

根据文档:

type关键字参数add_argument()允许执行任何必要的类型检查和类型转换…type=可以接受带有单个字符串参数并返回转换后值的任何可调用对象

您可以执行以下操作:

def valid_date(s):
    try:
        return datetime.strptime(s, "%Y-%m-%d")
    except ValueError:
        msg = "Not a valid date: '{0}'.".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)


 类似资料:
  • 我的问题是关于thymeleaf数据对象绑定。表单标记中有th:object=“${newPost}”。Thymeleaf看到它,当我提交我的表单时,它将每个,绑定到这个对象的字段。 但是如果我从type='text'更改为type='anything else'>thymeleaf不会映射任何内容。我如何使thymeleaf绑定其他标签,如等到我的对象?

  • 我想知道为什么Java程序在运行时只从命令行获取字符串形式的参数?我读过,如果参数声明为int,它仍然将int转换为字符串。为什么会出现这种情况?并且在运行java程序时,有没有办法只从命令行接受int值呢?

  • #include <stdio.h> int main(void) { int i; for (i = 0; i < 100; i++) { printf("i = %d\n", i); } return 0; } 技巧 在gdb中,缺省情况下程序的输入输出是和gdb使用同一个终端。你也可以为程序指定一个单独的输入输出终端。 首先,打开一个新终端,使

  • 问题内容: 我正在运行AnchorCMS,而我刚刚升级到0.8版。尝试运行安装程序时,出现“未指定输入文件”错误。我相信这很可能是.htaccess问题,但是我不确定应该使用什么正确的设置。 我的网站可以在这里找到。 我的.htaccess设置为: 如果有帮助,我还将GoDaddy用作托管服务提供商。 问题答案: 未 指定输入文件 是由于服务器上PHP的实现而向您显示的消息,在这种情况下,这表示C

  • 我正在创建一个Cloudwatch事件规则,如果步骤函数进入故障或超时状态,它应该会触发lambda。云观察事件规则将参数传递给lambda,这将发送一封自定义的SNS电子邮件。我正在尝试将输入参数的值从我在云形成模板中设置的参数传递到Cloudwatch事件规则中。我无法让Cloudform将参数值提取出来,将它们放入Cloudwatch事件规则输入参数中。CF接受我在JSON中给出的文字值并将

  • 问题内容: 嗨,我是Codeigniter的初学者,我看过CI教程,只是想做一件简单的事情。我下载了CI,并将此文件添加到控制器目录中,但是它不起作用。 当我尝试使用http://..../index.php/site访问它时,得到输出…“未指定输入文件” .....,我将文件命名为site.php。 问题答案: 我在这里找到了此问题的答案.....问题是托管服务器…我感谢所有尝试过的人....希