我试着写一个我将在命令行运行的python程序。我希望程序采用单个输入变量。具体来说,我会使用2014-01-28(yyyy-mm-dd)形式的日期:
e.g。 python my_script.py 2014-01-28
似乎argparse可以帮助我,但我发现很少有关于该模块的文档。有没有人有这样的经历?
答案 0 :(得分:29)
从Python 3.7开始,(稍微)更方便的选项是fromisoformat
:https://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