docopt in python3 参数定义

docopt in python3 argumentes definitions

我正在尝试使用 docopt。

我想这样调用我的程序:

python3 my_script -p argum1 -d argum2 -u faculm

-u 不是必需的,但“-p”和“-d”是必需的。

i have allready made this:

""" 
Usage:
    passwdcrack.py -p=<password>, 
    passwdcrack.py -d=<dicionario>       
    passwdcrack.py [-u=<user>]        

Options:
    -h --help       mostra este ecrã
    --version       Mostra a versão
    -p=<password>   indicar o caminho para o ficheiro tipo */etc/shadow
    -d=<dicionario> indicar o caminho para o ficheiro com lista de Passw
    -u=<user>       indica o utilizador para ser analisado
"""
import docopt

if __name__ == '__main__':
    arguments = docopt.docopt(__doc__, version='0.0001')
    print (arguments)

但是当我调用它时,它给了我这个:

$ python3 passwdcrack.py -d papa -d pfpf -u madona Traceback (most recent call last): File "passwdcrack.py", line 17, in arguments = docopt.docopt(doc, version='0.0001') AttributeError: 'module' object has no attribute 'docopt'

有人可以帮助我吗? 谢谢

您的路径中某处有一个名为 docopt.py 的文件正在导入,而不是实际的 docopt 模块。您需要找到它并重命名或删除它。

我知道了。 Docopt 对 space 和制表符非常挑剔。

事情是这样的。

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

注意 space。在选项中缩进是 2 spaces -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"
}