「Print LF with Python to Windows stdout」へのインチキ解は MSYS に乗せての別解。
ふと DOS の type コマンドを呼び出しちまう手もあるかと。
たとえばこんなね:
1 # -*- coding: utf-8 -*-
2 from __future__ import unicode_literals
3 from __future__ import print_function
4
5 import sys
6
7
8 if sys.platform == "win32":
9 def _print(*values, **kwarg):
10 import io
11 import os
12 import tempfile
13 sep = kwarg.get("sep", ' ')
14 end = kwarg.get("end", '\n')
15 #file = ...
16 flush = kwarg.get("flush", False)
17 fn = tempfile.mktemp()
18 with io.open(fn, "wb") as fo:
19 fo.write((sep.join(values) + end).encode("utf-8"))
20 if flush:
21 fo.flush() # maybe no sense...
22
23 #os.system('type "%s" | od -a' % fn)
24 os.system('type "%s"' % fn)
25 else:
26 _print = print
27
28 _print("abcde")
まぁ…、これじゃぁさ、「Print LF with Python to Windows stdout」へのインチキ解は MSYS に乗せてで書いた『こんなん「日常タスクとしての日々のゴミスクリプト」ごときのためにやるようなことではなくて』に対する回答にはなってないやね。
ちなみに、実験してて初めて気付いたのだが、MSYS コマンドって、「MSYS からの起動か DOS からの起動か」で改行コードについても振る舞いを変えちゃうのね。cat なのに CR LF になってビビった。