Python docopt 使用菜单问题
我遇到了一个错误,我觉得可能是因为我使用的描述有问题,但我不知道具体原因。我的想法是先从一个文件中获取有效用户的列表(包括用户名和密码),然后把这些信息分割成一个字典并返回这个字典。接着,我会获取一个服务器的文件(每行一个IP地址),把它变成一个列表。然后我会调用一个子进程来执行mtstc,可能是生成一个.rdp配置文件,或者直接在命令行输入凭据(不过我还没做到这一步)。
任何帮助都非常感谢。
错误信息
unknown@ubuntu:~$ ./rdpcheck.py -u userpass.txt -s servers.txt
Traceback (most recent call last):
File "./rdpcheck.py", line 30, in <module>
arguments = docopt(__doc__, version='0.1a')
File "/usr/local/lib/python2.7/dist-packages/docopt.py", line 560, in docopt
pattern = parse_pattern(formal_usage(DocoptExit.usage), options)
File "/usr/local/lib/python2.7/dist-packages/docopt.py", line 373, in parse_pattern
result = parse_expr(tokens, options)
File "/usr/local/lib/python2.7/dist-packages/docopt.py", line 387, in parse_expr
seq = parse_seq(tokens, options)
File "/usr/local/lib/python2.7/dist-packages/docopt.py", line 396, in parse_seq
atom = parse_atom(tokens, options)
File "/usr/local/lib/python2.7/dist-packages/docopt.py", line 415, in parse_atom
raise tokens.error("unmatched '%s'" % token)
docopt.DocoptLanguageError: unmatched '('
代码
#!/usr/bin/python
"""
Script to check valid login credentials have ability to rdp to list of server.
Usage:
rdpcheck.py (-u <user>) (-s <server>)
rdpcheck.py -h | --help
Options:
-u --user
-s --server
-h --help This help screen this screen.
"""
from docopt import docopt
def getuserpass(userpass):
list = {}
with open(userpass, 'r') as text:
for line in text:
key, value = line.split()
return list
def getservers(servers):
slist = open(servers).readlines()
return [s.replace('\n', '.') for s in slist]
if __name__ == "__main__":
arguments = docopt(__doc__, version='0.1a')
print arguments
1 个回答
0
看起来我忽略了 --version 这个选项。
新代码
#!/usr/bin/python
"""
Description:
Users to test a list of credentials against a list of servers
Usage:
rdpcheck.py (-u <FILE>) (-s <FILE>)
rdpcheck.py -h | --help
rdpcheck.py --version
Options:
-h --help Show this screen.
--version Show version.
-u --user=FILE
-s --server=FILE
"""
from docopt import docopt
def getuserpass(userpass):
list = {}
with open(userpass, 'r') as text:
for line in text:
key, value = line.split()
return list
def getservers(servers):
slist = open(servers).readlines()
return [s.replace('\n', '.') for s in slist]
if __name__ == "__main__":
arguments = docopt(__doc__, version='0.1a')
print arguments