[Python] 標準出力で上書きしたり追記したりする
こんにちは、@yoheiMuneです。
PythonのCUIプログラムを作るときに少し便利な、標準出力に関するノウハウをブログに書きたいと思います。
本ブログでは、Python、フロントエンド、Go言語、Linux、Node.js、インフラ、Swift、Java、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時に、解決の糸口を見つけられる」そんな目標でブログを書き続けています。今後も役立つネタを書いていきますので、ぜひ本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
PythonのCUIプログラムを作るときに少し便利な、標準出力に関するノウハウをブログに書きたいと思います。
目次
標準出力のやり方(一般的なもの)
printなどを使うことで簡単に標準出力を行うことができます。
for i in range(3):
print(i)
"""
0
1
2
"""
が、この場合には行が追加されていきます。一般的な使い方ですね!標準出力を上書きする
上記の場合にはドシドシと行が追加されますが、例えば進捗をカウントアップしたい場合には、行が追加されたら見づらくて困ります。その場合には、以下のように実装することで、既に出力した内容を上書きすることができます。
import sys
import time
for i in range(10):
// 先に出力した内容を上書きする
sys.stdout.write("\r{}".format(i))
sys.stdout.flush()
time.sleep(0.1)
// 改行して終わり
print()
"""
9
"""
ここでのポイントはsys.stdout.writeで\rを指定することです。それを指定することで、既に出力した内容を上書きすることができます。標準出力で行に追記する
行に追記することもできます。例えばダウンロード進捗をゲージで表すような場合に使うことができます。
for i in range(10):
// どんどんと行に追記していく.
sys.stdout.write("*")
sys.stdout.flush()
time.sleep(0.1)
print()
"""
**********
"""
sys.stdout.writeでは改行は含まれないので、書き出すごとに行末に出力が増えていきます。最後に
Pythonでユーザーとの対話するようなプログラムを書くときに、今回の実装を学びました。Pythonは色々とできて素敵ですね。本ブログでは、Python、フロントエンド、Go言語、Linux、Node.js、インフラ、Swift、Java、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時に、解決の糸口を見つけられる」そんな目標でブログを書き続けています。今後も役立つネタを書いていきますので、ぜひ本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!






