2017/10/26更新

[Python] 標準出力で上書きしたり追記したりする

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
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、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時に、解決の糸口を見つけられる」そんな目標でブログを書き続けています。今後も役立つネタを書いていきますので、ぜひ本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。