この記事の目的
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")
上書き
普通に print(i)
を回していると1,2,3...が縦長になってしまうので結果が見づらくなりますが、これならスペースを取らないので見やすそうです。
import sys
for i in range(1000):
sys.stdout.write("\r{}".format(i))
sys.stdout.flush()
上の\r
を除くと改行せず出力を続けていくことができます。
import sys
for i in range(10):
sys.stdout.write("{}".format(i))
sys.stdout.flush()
ただし、これはprint
のend
を指定することによっても実現できます。
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
参考
Qiita:コンソールに色付きの出力をする方法
Qiita:コンソールへの出力を上書きしてゆく方法
Hatena:pythonで標準出力されたデータを取得する