Ces*_*sco 4 python python-click
你好,
我实际上正在学习如何使用点击包中的一些元素,并且我希望能够使用该prompt命令从用户那里获取有效日期。
我尝试查找文档,并在http://click.pocoo.org/5/prompts/下找到了这个:
要手动请求用户输入,可以使用prompt()函数。默认情况下,它接受任何 Unicode 字符串,但您可以要求任何其他类型。
所以我编写了这段代码并尝试将类 datetime.datetime 作为所需的输入类型传递:
import datetime
value = click.prompt("Enter a date", type=datetime.datetime)
Run Code Online (Sandbox Code Playgroud)
当我执行此代码时,会出现提示,但在插入有效日期并按 Enter 键后,我收到此错误消息:
回溯(最近一次调用):文件“”,第 1 行,文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/termui.py”,第 98 行,在提示 result = value_proc(value) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/types.py",第 38 行,在调用 return self.convert (value, param, ctx) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/types.py”,第 87 行,在转换中返回 self.func(value )类型错误:需要一个整数(得到类型 str)
请您告诉我我在这段代码中做错了什么吗?
基本上我想通过编写类似这段(部分虚构的)代码的内容来获得正确格式化的日期值:
import datetime
value = click.prompt("Enter a date",
type=datetime.datetime,
format="%d/%m/%Y",
default=datetime.datetime.now())
Run Code Online (Sandbox Code Playgroud)
非常感谢
Click 现在似乎不处理日期,但将来可能会发生变化。
相反,您可以传递带有参数的解析器value_proc。我已经使用了dateutil,但datetime如果您愿意,您可以将其更改为:
from dateutil import parser
import click
def parse(value):
try:
date = parser.parse(value)
except:
raise click.BadParameter("Couldn't understand date.", param=value)
return value
value = click.prompt("Enter a date", value_proc=parse)
Run Code Online (Sandbox Code Playgroud)