我试图检查输入的长度是否有效:
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 :(得分:0)
validate
使用的函数必须使用两个参数;第一个是先前给出答案的字典,第二个是当前答案。
code to handle validation捕获所有异常并将其转换为验证错误,因此使用仅包含一个参数的lambda将始终导致验证失败。
让你的lambda也接受答案词典;你可以忽略给定的值:
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'}