2012-03-17 9 views
0

Pythonを使いこなしている間に、ランダムなシンボルジェネレータを作成することにしました。これは、文字列をCLに連続して出力します。pythonでstdoutのスペースを避けるには?

それは非常に簡単だし、次のようになります。

from random import choice 
import sys 

char_ranges = [[33,48],[58,65],[91,97],[123,127]] 

chars = [] 
for r in char_ranges: 
    for i in range(r[0],r[1]): 
     chars.append(chr(i)) 

while True: 
    print choice(chars), 
    sys.stdout.flush() 

それに唯一の問題は、文字を印刷した後に使用,stdout.flush()が呼び出された後にスペースが追加されますということです。

私は通常これを回避する方法は、文字列を連結して印刷することですが、この場合は連続的な出力フローが必要なので、連結は役に立ちません。

どうやってスペースを入れずにPythonで連続的な出力フローを得ることができますか?

答えて

6

printの代わりにsys.stdout.writeを使用してください。

printは、迅速で汚れた出力のためのより高いレベルの構成です。より多くのコントロールが必要な場合は、別のものを使用してください。

+2

印刷*文は*それを行うことはできません。 print( "a"、end = ''))でも、print *関数はできます。 – DSM

1

これを試してみてください:

sys.stdout.write(choice(chars)) 
関連する問題