Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用click.prompt从用户处获取有效日期?_Python_Python Click - Fatal编程技术网

Python 如何使用click.prompt从用户处获取有效日期?

Python 如何使用click.prompt从用户处获取有效日期?,python,python-click,Python,Python Click,你好, 实际上,我正在学习如何使用click包中的一些元素,我希望能够使用提示符命令从用户那里获取有效日期 我试图查找文档,我在下面找到了: 要手动请求用户输入,可以使用prompt()函数。默认情况下,它接受任何Unicode字符串,但您可以要求任何其他类型 因此,我编写了这段代码,并尝试将datetime.datetime类作为所需的输入类型传递: import datetime value = click.prompt("Enter a date", type=datetime.date

你好,

实际上,我正在学习如何使用click包中的一些元素,我希望能够使用
提示符
命令从用户那里获取有效日期

我试图查找文档,我在下面找到了:

要手动请求用户输入,可以使用prompt()函数。默认情况下,它接受任何Unicode字符串,但您可以要求任何其他类型

因此,我编写了这段代码,并尝试将datetime.datetime类作为所需的输入类型传递:

import datetime

value = click.prompt("Enter a date", type=datetime.datetime)
执行此代码时会出现提示,但在插入有效日期并按enter键后,会收到以下错误消息:

回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/click/termui.py”,第98行,在提示符中 结果=值\过程(值) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/click/types.py”,第38行,调用 返回self.convert(值、参数、ctx) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/click/types.py”,第87行,在convert中 返回self.func(值) TypeError:需要一个整数(获取类型str)

拜托,你能告诉我我在这个代码中做错了什么吗

基本上,我希望通过编写类似以下(部分虚构)代码的内容来正确格式化日期值:


非常感谢

现在看来,Click并不能处理日期,但将来可能会有所改变

相反,您可以使用
value\u 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)

非常感谢你
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)