0

docoptユーザーが次のような入力を行えるように使用しようとしています。

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

引数argum1であり、定位置であってargumはなりません。最初の 2 つの引数は必須で、3 番目の引数はオプションです。

私はすでにこれを持っています:

""" 
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 に答える