[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をフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!