0

我正在尝试使用docopt,以便用户可以进行如下输入:

python3 -p argum1 -d argum2 [-u arg_facul]

参数argum1并且argum不能是位置的;前两个参数是必需的,第三个是可选的。

我已经有了这个:

""" 
Usage:
         pyprogram.py    (-p PASS | --pass=PASS) (-d DICT | --dict=DICT) [-u USER --user=USER]  

    Arguments:


    Options:
        -p              demand argument 1
        -d              demand argument 2 
        -u              may have this agrument or not
"""

输出是:

...$ python3 pyprogram.py -d dict.txt -p passwd.txt -u root 
{'--dict': None,  '--pass': None,  '-d': True,  '-p': True,  '-u': True,  'DICT': 'passwd.txt', 'PASS': 'dict.txt', 'USER': 'root'}

我希望输出为:

... $ python3 pyprogram.py -d dict.txt -p passwd.txt -u root 
{'--dict': None,  '--pass': None,  '-d': True,  '-p': True,  '-u': True,  'DICT': 'dict.txt',  'PASS': 'passwd.txt', 'USER': 'root'}
4

1 回答 1

0

我发现了。Docopt 对空间蚂蚁标签非常挑剔。

所以这就是它的样子。

"""
Usage:
  passcrack_end.py -p <passw> -d <dic> [-u <user>]

Arguments:
  <passw>   ficheiro onde se encontram as passwords encriptadas - shadow
  <dic>     ficheiros com o dicionario das possiveis palavras passe 
  <user>    Utilizador para o qual quer encontrar a password

Option:
  -p pp     opção obrigatória
  -d dd     opção obrigatória
  -u uu     campo facultativo
"""

注意空间。在选项中,缩进是2 个空格 -d

如果您使用此参数调用程序:

-d derivation -p panto -u ume

输出将是:

{
  "-d": "derivation", 
  "-p": "panto", 
  "-u": "ume"
}

如果您使用此参数调用程序:

 -p panto -u ume -d derivation

输出将是相同的:

{
  "-d": "derivation", 
  "-p": "panto", 
  "-u": "ume"
}
于 2015-05-18T08:29:47.180 回答