たとえば、よくあるのは「出力を画面幅いっぱいになるようにきれいに出したいので、 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.
参考
How to get Linux console window width in Python - Stack Overflow
0 件のコメント:
コメントを投稿