docopt в определениях аргументов python3

Я пытаюсь использовать докопт.

я хочу назвать свою программу так:

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 папа -d pfpf -u madona Traceback (последний вызов был последним): файл "passwdcrack.py", строка 17, в аргументах = docopt.docopt (doc, версия ='0.0001'). AttributeError: ' у модуля ' object нет атрибута' docopt '

Кто-нибудь может мне помочь? Спасибо

2 ответа

Решение

У вас есть файл с именем docopt.py где-то на вашем пути, который импортируется вместо фактического модуля 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 панто -u ume

вывод будет:

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

если вы вызываете программу с такими аргументами:

-p panto -u ume -d вывод

вывод будет таким же:

{
  "-d": "derivation", 
  "-p": "panto", 
  "-u": "ume"
}
Другие вопросы по тегам