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