2017-02-06 2 views
1

こんにちは、click.promptを使用して有効な日付をユーザーから取得する方法はありますか?

私は実際にクリックパッケージからいくつかの要素を使用する方法を学んでおり、promptコマンドを使用して有効な日付をユーザから取得したいと考えています。

私は、ドキュメントを見上げてみました、と私はhttp://click.pocoo.org/5/prompts/の下でこれを見つけた:

To manually ask for user input, you can use the prompt() function. By default, it accepts any Unicode string, but you can ask for any other type.

だから私はこのコードを書いたし、入力の希望型としてクラスのdatetime.datetimeを渡そうとしました:

Traceback (most recent call last): File "", line 1, in File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/termui.py", line 98, in prompt result = value_proc(value) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/types.py", line 38, in call return self.convert(value, param, ctx) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/types.py", line 87, in convert return self.func(value) TypeError: an integer is required (got type str)

私はプロンプトが表示されます。このコードを実行するが、私は、有効な日付を挿入し、押した後、私は、このエラーメッセージが出ていキーを入力

このコードで私が間違っていることを教えてください。

基本的に私が適切に(部分的に架空の)コードのこの作品のようなものを書くことでフォーマットされた日付値を取得したいのですが:

import datetime 

value = click.prompt("Enter a date", 
        type=datetime.datetime, 
        format="%d/%m/%Y", 
        default=datetime.datetime.now()) 

はそれがいないように非常に多くの

答えて

3

をありがとうクリックすると現在の日付が表示されますが、おそらく将来変更される可能性があります。

代わりに、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) 
+0

はどうもありがとうございました – Cesco

関連する問題