「Print LF with Python to Windows stdout」へのインチキ解は DOS にも乗せて

「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 になってビビった。



Related Posts