ラインフィードの互換性
ラインフィードの互換性について
tags: | python, tips, experiment |
---|---|
created: | 2006-02-05T20:24:24 |
ラインフィードの互換性について WindowsとLinuxではラインフィードキャラクターが違いますね。
CRとLFと
Windowsでは改行コードにCR+LFを期待しているアプリケーションが多い。
代表的なものとしてはnotepad.exeではファイルすべての内容が1行という扱いになります。
LinuxではCRコードがあるとテキストを読めないアプリケーションが多い。
代表的なものとしてはLinux上のPythonがCR+LFだとソース解析エラーになるようです。
お使いのOSでどちらを標準とするのかは
>>> import os
>>> os.linesep
'\r\n'
とすれば、「’\r\n’」か「’\n’」と表示されます。 (ちなみにCR=\r、LF=\nです。)
問題点
以下のコードをWindowsで実行すると・・・。
file('test.txt', 'w').write('hoge\nmoge\n')
「’hoge\r\nmoge\r\n’」という内容のファイルがアウトプットされます。
ご丁寧にPythonファイルオブジェクトはOS推奨の改行コードに変換して出力してしまいます。
これでは、Linuxに読ませたいファイルを出力したい時に困ってしまいます。
注釈
ちなみにWindowsでテキストモードで読み込むと\r\nは\nに変換してくれます。