#python #telethon
#python #телемарафон
Вопрос:
существует функция, которая называется getpass, которая просит вас ввести пароль внутри input(), а затем возвращает пароль.
Я пытаюсь преобразовать строку в объект getpass. без использования ввода.
Я общаюсь с telethon api
Всякий раз, когда я пытаюсь использовать ненормальную строку в качестве своего пароля, я получаю сообщение «Не удалось войти», вы можете просмотреть код здесь:
try:
obj.client.sign_in(obj.user.phone, code = code)
except SessionPasswordNeededError:
try:
obj.client.sign_in(password=obj.client.cloud)
except:
print("Couldn't log")
Но когда я использую
try:
obj.client.sign_in(obj.user.phone, code = code)
except SessionPasswordNeededError:
try:
passw = getpass.getpass()
obj.client.sign_in(password=passw)
except:
print("Couldn't log")
Я не получаю исключений, и все работает хорошо.
поэтому я знаю, что getpass не возвращает обычную строку, и мне нужно преобразовать мою строку в объект getpass
Есть ли какая-либо возможность сделать это?
Заранее спасибо!
——Редактировать——
как упоминал @Chris в комментариях, getpass возвращает обычную строку. Проблема была с «obj.client.cloud», внутри которого был разрыв строки, поэтому, когда я напечатал обе строки, я подумал, что они одинаковые.
Вы можете проверить тип объекта, используя type(obj), как указал @Chris. и вы можете проверить, совпадают ли оба значения, используя («string» == getpass.getpass()), и он вернет значение true .
Комментарии:
1.
getpass.getpass()
возвращает обычную строку. Приводить нечего. Попробуйте сами: запуститеtype(passw)
. Я подозреваюobj.client.cloud
, что она не содержит того, что вы думаете.2. @Chris Я думаю, вы были правы, вероятно, проблема в obj.client.cloud. Это странно, потому что всякий раз, когда я печатаю obj.client.cloud, он возвращает правильный облачный пароль, но он не работает. Если я ввожу пароль напрямую, он работает.
3. Хорошо, после проверки внутри строки был разрыв строки, и это вызвало исключение. @Chris спасибо за вашу помощь!