Документация Python неофициальный перевод

getpass.md

62 строк · 5.9 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.15/library/getpass.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `getpass` – портативный ввод пароля89**Исходный код:** [Lib/getpass.py](https://python-all.ru/src/3.15/Lib/getpass.py)1011---1213[Доступность](https://python-all.ru/3.15/library/intro.html#availability): не WASI.1415Этот модуль не работает или недоступен на WebAssembly. Подробнее см. [платформы WebAssembly](https://python-all.ru/3.15/library/intro.html#wasm-availability).1617Модуль `getpass` предоставляет две функции:1819#### `getpass.getpass(prompt='Password: ', stream=None, *, echo_char=None)`2021Запрашивает у пользователя пароль без отображения. Пользователю выводится строка *prompt*, по умолчанию равная `'Password: '`. В Unix строка записывается в файлоподобный объект *поток данных* с использованием обработчика ошибок replace при необходимости. *поток данных* по умолчанию равен управляющему терминалу (`/dev/tty`) или, если он недоступен, `sys.stderr` (этот аргумент игнорируется в Windows).2223Аргумент *echo\_char* управляет отображением вводимых пользователем символов. Если *echo\_char* равен `None` (по умолчанию), ввод остаётся скрытым. В противном случае *echo\_char* должен быть одним печатным символом ASCII, которым заменяется каждый введённый символ. Например, `echo_char='*'` будет выводить звёздочки вместо фактического ввода.2425Если ввод без эхо-отображения недоступен, getpass() возвращается к выводу предупреждающего сообщения в *поток данных* и чтению из `sys.stdin` с генерацией [`GetPassWarning`](https://python-all.ru/3.15/library/getpass.html#getpass.GetPassWarning).2627> **Примечание**28>29> Если вызвать getpass из IDLE, ввод может выполняться в терминале, из которого была запущена IDLE, а не в самом окне IDLE.3031> **Примечание**32>33> В Unix-системах, когда *echo\_char* установлен, терминал будет настроен на работу в *[неканоническом режиме](https://python-all.ru/3.15/library/getpass.html)*. Поддерживаются стандартные управляющие символы терминала:34>35> - `Ctrl`+`A` – Переместить курсор в начало строки36> - `Ctrl`+`E` – Переместить курсор в конец строки37> - `Ctrl`+`K` – Удалить от курсора до конца строки38> - `Ctrl`+`U` – Удалить всю строку39> - `Ctrl`+`W` – Стереть предыдущее слово40> - `Ctrl`+`V` – Вставить следующий символ буквально (кавычка)41> - `Backspace`/`DEL` – Удалить символ перед курсором42>43> Эти сочетания работают за счёт чтения настроек отображения управляющих символов терминала из параметров termios.4445Изменено в версии 3.14: Добавлен параметр *echo\_char* для обратной связи с клавиатуры.4647Изменено в версии 3.15: При использовании непустого *echo\_char* в Unix сочетания клавиш (включая перемещение курсора и редактирование строки) теперь корректно обрабатываются с помощью конфигурации управляющих символов терминала.4849#### `exception getpass.GetPassWarning`5051Подкласс [`UserWarning`](https://python-all.ru/3.15/library/exceptions.html#UserWarning), создаваемый, когда ввод пароля может отображаться на экране.5253#### `getpass.getuser()`5455Возвращает «логин» пользователя.5657Эта функция последовательно проверяет переменные окружения `LOGNAME`, `USER`, `LNAME` и `USERNAME` и возвращает значение первой, установленной в непустую строку. Если ни одна не установлена, на системах, поддерживающих модуль [`pwd`](https://python-all.ru/3.15/library/pwd.html#module-pwd), возвращается логин из базы паролей; в противном случае возбуждается [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError).5859В целом эту функцию следует предпочитать [`os.getlogin()`](https://python-all.ru/3.15/library/os.html#os.getlogin).6061Изменено в версии 3.13: Ранее возбуждались различные исключения, а не только [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError).62