LoginSignup
42
62

More than 3 years have passed since last update.

Pythonのprintいろいろ

Last updated at Posted at 2021-03-21

この記事の目的

Pythonの出力 print を使いこなすためのメモ。文字色を変えたり、既に出力した文字に上書きをしたり、printで出力されるものをテキストファイルに書き出したり。1つ1つは既に紹介されているものでしたが、自分なりにコードを直してまとめてみました。

文字色

エスケープシーケンスを直前に出力することで、それ以降の文字色を変更することができるようです。そのため毎回最後にリセットするための"\033[0m"も出力しています。

color_dic = {"black":"\033[30m", "red":"\033[31m", "green":"\033[32m", "yellow":"\033[33m", "blue":"\033[34m", "end":"\033[0m"}
def print_color(text, color="red"):
    print(color_dic[color] + text + color_dic["end"])
text = "青い文字で出力"
print_color(text, "blue")

image.png

上書き

普通に print(i) を回していると1,2,3...が縦長になってしまうので結果が見づらくなりますが、これならスペースを取らないので見やすそうです。

import sys

for i in range(1000):
    sys.stdout.write("\r{}".format(i))
    sys.stdout.flush()

overwrite.gif

上の\r を除くと改行せず出力を続けていくことができます。

import sys

for i in range(10):
    sys.stdout.write("{}".format(i))
    sys.stdout.flush()

image.png

ただし、これはprintend を指定することによっても実現できます。

for i in range(10):
    print(i, end="")

外部書き出し

パッケージを使っていると様々な結果がprintで書き出されることがあると思います。これらをテキスト形式で外部に出力するための設定です。自分で書いたコードであればprint のオプション file を指定すれば良いですが、それが出来ない場合の力技です。

# printをテキストに書き出す設定
temp_sysout = sys.stdout
sys.stdout = open("test.txt","w")

# メインのプリントする関数など
print("hello world")

# もとに戻す
sys.stdout = temp_sysout

image.png

参考

Qiita:コンソールに色付きの出力をする方法
Qiita:コンソールへの出力を上書きしてゆく方法
Hatena:pythonで標準出力されたデータを取得する

42
62
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
62