Python2のsoftspace
いまさら言うのもなんだが、Python3ではファイルのsoftspaceが廃止されている。これはprintステートメントでテキストを出力するとき、先頭にスペースを付加するかどうかのフラグだ。Python2ではprintステートメントの最後に , をつけると
print "a", # 改行文字を出力しない print "b", # 改行文字を出力しない print "c" # 改行文字を出力する
とすると、
a b c
のように改行文字を出力せず、文字の前に適切にスペースを付けて出力するようになっていた。
この動作を管理しているのがファイルオブジェクトのsoftspaceフラグで、
import sys print "a", # 改行文字を出力しない sys.stdout.softspace=0 print "b", # 改行文字を出力しない print "c" # 改行文字を出力する
とすると結果は
ab c
となる。この機能はprintステートメントでだけ有効で、例えば
import sys print "a", sys.stdout.write("b") print "c"
のようにファイルオブジェクトのwrite()メソッドを使うと、出力は
abc
となってしまう。Python3ではこのような暗黙のうちに使われるフラグは廃止するので、必要ならプログラムで明示的に行ってください、ということだろう。