Pythonでユニバーサル改行モードが非推奨になったのはなぜですか?


26

私はちょうどことに気づいユニバーサル改行ファイル操作の機能は、その方法アウトになるようです。

Python 3.5 openmodeパラメーターのドキュメントには、非推奨であることが示されています。

'U' ユニバーサル改行モード(非推奨)

少なくともPython 3.2までさかのぼりopenmode引数の使用法を文書化するときに、同様の「後方互換性のみ」の警告が含まれています。

'U' ユニバーサル改行モード(後方互換性のため。新しいコードでは使用しないでください)

Python 2.7でも、同様の警告がのドキュメントに記載されていますio.open

この理由は何ですか?


2
この背後にあるロジックはかなり単純です。名前のないものよりも名前のあるものを持っている方が、より「Pythonic」と見なされます。したがって、文字フラグではなく名前付きパラメーターを使用します。旗のアイデアは、PythonのC実装の残り物であり、除草されているのは不思議ではありません。
ワールドエンジニア

ファイルはデフォルトでユニバーサル改行モードで開かれるためです。
ボリス

回答:


37

Python 3ライブラリのopen()関数にはnewline引数があります。Noneユニバーサル改行を有効にするように設定します。これは受け入れられる方法であり、mode='U'引数を冗長にします。

newline=Noneユニバーサル改行モードを有効にするために使用します(これがデフォルトです)。


5
私は誤解したように見えます。私は、モード文字だけでなく、一般的な普遍的な改行が廃止されると言っていると読みました。それを片付けてくれてありがとう。
jpmc26

6

この質問に出くわした後、ドキュメントを更新して、何が起こっているかをより明確にしました(https://github.com/python/cpython/pull/11646/files)。

の紛らわしい暗号テーブルのエントリ'U'はなくなり、代わりに次のような段落があります:

許可されている追加のモード文字がありますが'U'、これはもはや効果がなく、非推奨と見なされます。以前universal newlinesは、テキストモードで:term:を有効にしていたため、Python 3.0のデフォルトの動作になりました。詳細については、:ref:newline <open-newline-parameter>パラメーターのドキュメントを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.