如何使用argparse解析日期作为参数?

时间:2014-01-29 16:44:38

标签: python date command-line argparse

我试着写一个我将在命令行运行的python程序。我希望程序采用单个输入变量。具体来说,我会使用2014-01-28(yyyy-mm-dd)形式的日期:

e.g。 python my_script.py 2014-01-28

似乎argparse可以帮助我,但我发现很少有关于该模块的文档。有没有人有这样的经历?

2 个答案:

答案 0 :(得分:29)

从Python 3.7开始,(稍微)更方便的选项是fromisoformathttps://docs.python.org/3/library/datetime.html#datetime.date.fromisoformat

使用它,您可以将mgilson代码中的相关行替换为:

parser.add_argument('date', type=datetime.date.fromisoformat)

(我还将在对此help的调用中添加一个add_argument参数,并提及输入应采用ISO格式。)

答案 1 :(得分:13)

有很多文档in the standard library,但通常有类似的内容:

import argparse
import datetime

parser = argparse.ArgumentParser()
parser.add_argument('date', type=lambda s: datetime.datetime.strptime(s, '%Y-%m-%d'))
args = parser.parse_args(['2012-01-12'])  # For testing.  Pass no arguments in production
print args.date