Система записи пароля: стандартный вывод больше не работает - PullRequest
1 голос
/ 16 апреля 2020

Я сейчас работаю над личным проектом и пытаюсь создать функцию пароля. Итак, я написал этот скрипт:

import getch
import sys

print("votre mot de passe : ", end="")
passwor = ''
while True:
    x = getch.getch()
    if x == '\n':
        break
    sys.stdout.write("*")
    passwor += x

print('\n'+passwor)

Но я застрял в проблеме: на моей консоли вывода ничего не появляется. Кажется, проблема возникла из аргумента end = "" из print и sys.stdout.write ( ""). Я пытаюсь удалить оба, и это работает правильно (я меняю sys.stdout.write ("") на print ("*")). Я провел некоторое исследование и нашел решение: если я запускаю свой скрипт, например: python3 -u <my_script>, он работает, но я хочу вызвать эту функцию для другого файла ... поэтому было бы здорово, если бы я мог запустить свой сценарий без -u аргумент ... Есть ли решение? Просто для информации: [os: debian (wsl), версия: python3 .7.3]

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Если вы используете Python 3.3 или более позднюю версию, вы можете написать print("votre mot de passe : ", end="", flush=True), и она автоматически заставит Python записать все данные в буфере вывода на терминал. Вы также можете вручную вывести sh выходной буфер, написав sys.stdout.flush() после печати. ​​

0 голосов
/ 16 апреля 2020

Попробуй это. Он не заменит символы пароля на *, но при этом ничего не печатает на стандартный вывод во время ввода.

from getpass import getpass

password = getpass(prompt="votre mot de passe: ")
print(password)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...