Python でコマンドラインで利用するちょっとしたツールを作る場合には、現在のターミナルのウィンドウサイズを知りたくなることがあります。
たとえば、よくあるのは「出力を画面幅いっぱいになるようにきれいに出したいので、 1 行の文字数を知りたい」といったケースなどでしょうか。
Python でターミナルのサイズを取得したい場合は組みこみの shutil
ライブラリの get_terminal_size()
を使えば OK です。
使ってみます。
import shutil
terminal_size = shutil.get_terminal_size()
print(type(terminal_size))
# => <class 'os.terminal_size'>
print(terminal_size.columns)
# => 120 など( 1 行の長さ(文字数))
print(terminal_size.lines)
# => 40 など(行数)
print(terminal_size[0])
# => columns と同じ結果
print(terminal_size[1])
# => lines と同じ結果
get_terminal_size()
の戻り値は os.terminal_size
クラスの named tuple で、アトリビュートでも、インデックスでも値を抽出することができます。
便利です。
どうも、 os
の方にも同名の os.get_terminal_size()
という関数があって、これもまったく同じ結果を返しますが、公式のドキュメントによると、「 os.get_terminal_size
はローレベルの実装であり、通常はハイレベルな shutil.get_terminal_size()
を使いましょう」とのことです。このあたりの詳しい理由はわかりませんでした。。
shutil.get_terminal_size()
is the high-level function which should normally be used,os.get_terminal_size
is the low-level implementation.
参考