1

我正在尝试使用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(最近一次调用最后):文件“passwdcrack.py”,第 17 行,参数 = docopt.docopt( doc , version='0.0001') AttributeError:' module' 对象没有属性 'docopt'

有人能帮我吗?谢谢

4

2 回答 2

1

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

于 2015-05-08T22:48:00.797 回答
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 推导 -p panto -u ume

输出将是:

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

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

-p panto -u ume -d 推导

输出将是相同的:

{
  "-d": "derivation", 
  "-p": "panto", 
  "-u": "ume"
}
于 2015-05-20T20:00:19.773 回答