Python - よく使うモジュール - 標準入出力 - getpass


 クラウディア


1. 概要
2. 使い方
3. 備考

1. 概要

 「getpass」は、「python」のドキュメントには、「可搬性のあるパスワード入力機構」と書かれているのですが。  わたしは、エコーバックさせない入力のために使用しています。  エコーバックさせない入力を行おうとすると、「Linux」では、「termio」というモジュールを使ったり、「Windows」では、「ctypes」というモジュールを使ったりするようですが。  どちらも結構面倒くさいし、違うプラットフォームだと別々のプログラムを書かなければならない。  共通的に使用するには、パスワード入力は、端末にエコーバックしないという仕掛けを使用することにしました。

2. 使い方

 少なくとも「python 3.8」以降では、標準でインストールされているようです。  キー入力を受け付けるのは、行入力であれば。

import sys
line = sys.stdin.readline()
 とすれば、「line」に入力したものが、はいってくるわけですが。  これは、エコーバックしますし、冒頭で述べたように、エコーバックを止めるのは、面倒くさい。  そこで、「getpass」を使用するのですが。

import getpass
line = getpass.getpass()
 だと。

Password:
 てなプロンプトが表示されちゃう。  これを。

import getpass
line = getpass.getpass(prompt='')
 と書けば、エコーバックせずに、標準入力から行入力を受け取ることができます。

3. 備考

 本ページは、下記の記事を参考にさせていただきました。
getpass --- 可搬性のあるパスワード入力機構」
「getpass – パスワードのために入力文字を表示しないプロンプト
 この他、「Google」大先生に「python Windows キー入力非表示」の検索で教えていただきました。