No.114
ANSIエスケープシーケンスを研究中ですが表示がおかしい。
コードは間違いなくprintしているのに表示されない。いや、表示されることもある。
さて・・・
どうやらバッファの挙動によるものでした。
printで表示される文字列は一度バッファに蓄積され、バッファが一杯になるか、改行コードなどを受けると表示に渡されるのだとか。
単にprintするならその都度改行コードが発行されますのでその都度表示されるのですが、文字は表示したいけど改行したくないことがあります。
pythonのprintですと、
print('表示したい文字列', end='')
とすると改行せずに表示が実行されますが、改行が発行されないとバッファが一杯になるまで何も表示されません。
表示されたり表示されなかったりで困ったのですが、強制的に表示に送る方法がありました。
print('表示したい文字列', end='', flush=True)
最後に flush=True を加えるのです。
こうすると、バッファや改行コードに関係なく、printが実行される度に表示されます。
自由度が広がりました。
#Python
コードは間違いなくprintしているのに表示されない。いや、表示されることもある。
さて・・・
どうやらバッファの挙動によるものでした。
printで表示される文字列は一度バッファに蓄積され、バッファが一杯になるか、改行コードなどを受けると表示に渡されるのだとか。
単にprintするならその都度改行コードが発行されますのでその都度表示されるのですが、文字は表示したいけど改行したくないことがあります。
pythonのprintですと、
print('表示したい文字列', end='')
とすると改行せずに表示が実行されますが、改行が発行されないとバッファが一杯になるまで何も表示されません。
表示されたり表示されなかったりで困ったのですが、強制的に表示に送る方法がありました。
print('表示したい文字列', end='', flush=True)
最後に flush=True を加えるのです。
こうすると、バッファや改行コードに関係なく、printが実行される度に表示されます。
自由度が広がりました。
#Python