2016-10-19 4 views
1

Я пытаюсь проверить, если длина моего входа действует так:Проверка ввода с дознаватель

questions = [ 
    inquirer.Text('b_file', message='.GBK File', 
        validate=lambda file: len(str(file))), 
    inquirer.Text('e_file', message='.XLS File', 
        validate=lambda file: len(str(file)))] 

Но не работает. Является ли говорить, что это не является допустимым вход:

>>> import inquirer 
>>> questions = [ 
...  inquirer.Text('b_file', message='.GBK File', 
...     validate=lambda file: len(str(file))), 
...  inquirer.Text('e_file', message='.XLS File', 
...     validate=lambda file: len(str(file)))] 
>>> answers = inquirer.prompt(questions) 
[?] .GBK File: foo 
>> "foo" is not a valid b_file. 
+0

Может быть, вход не действует. Посмотрите, как спросить [mcve]. –

+0

В документации ['validate'] (http://python-inquirer.readthedocs.io/en/latest/usage.html#validate) указано, что функции нужно будет принимать ** два ** аргумента; [примеры] (http://python-inquirer.readthedocs.io/en/latest/examples.html#text-py), похоже, подтверждают это. –

ответ

0

Функция используется для validate должны два аргументов; первый - словарь с ранее заданными ответами, а второй - текущий ответ.

В code to handle validation уловы все исключения и превращает тех, в ошибках валидации, так что использование лямбда только с одним аргументом всегда будет приводить к проверке терпит неудачу.

Сделайте свой лямбда приемлемым для использования в словаре ответов; Вы можете игнорировать значение, заданное:

questions = [ 
    inquirer.Text('b_file', message='.GBK File', 
        validate=lambda answers, file: len(str(file))), 
    inquirer.Text('e_file', message='.XLS File', 
        validate=lambda answers, file: len(str(file)))] 

С этим изменением, вопросы работы:

>>> import inquirer 
>>> questions = [ 
...  inquirer.Text('b_file', message='.GBK File', 
...     validate=lambda answers, file: len(str(file))), 
...  inquirer.Text('e_file', message='.XLS File', 
...     validate=lambda answers, file: len(str(file)))] 
>>> answers = inquirer.prompt(questions) 
[?] .GBK File: foo 
[?] .XLS File: bar 
>>> pprint(answers) 
{'b_file': 'foo', 'e_file': 'bar'} 
Смежные вопросы