「print arg,」は改行を出力しないけど半角空白は出力されるよ
test.py:
print 'foo', print 123, print 'bar'
実行結果:
$ python test.py foo 123 bar
というわけで、print 文の最後にカンマ "," をつけた場合、それは「改行を出力しない」んじゃなくて、「改行のかわりに半角空白を出力する」という意味でした。
そんなわけで、
print "Content-Type: image/png\r\n", print "Content-Length: %d\r\n" % len(image), print "\r\n", print image,
はうまくいかなくて
import sys write = sys.stdout.write write("Content-Type: image/png\r\n") write("Content-Length: %d\r\n" % len(image)) write("\r\n") write(image)
はうまくいきましたとさ。
やっぱり print 文の仕様は余計なおせわだ。
ところで、コマンドラインで「python -c 'print 1, 2, 3,'」を実行すると、最後に改行が出力されるんだけど、これはなぜ?
$ python -c 'print 1, 2, 3,' 1 2 3 $ python -c 'print 1, 2, 3,' | ruby -e 'p ARGF.read' "1 2 3\n"
謎だ。