使用带有docopt的多个args

时间:2015-05-13 10:04:56

标签: python python-3.x docopt

我正在尝试使用docopt,因此用户可以执行以下输入:

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

参数argum1argum必须是位置的;前两个参数是必需的,第三个是可选的。

我已经有了这个:

""" 
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'}

1 个答案:

答案 0 :(得分: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"
}