1

私のコードが MacOS と Windows の両方で定期的にテキストを書き込めることを願っています。そのため、このスクリプトがモード U の機能を持ち、その間に w+ の機能を持っていることを願っています。

file.open() のモード引数はどうすればよいですか?

4

1 に答える 1

2

ユニバーサル改行モードでの書き込みはサポートされていません。PEPから:

別の改行規則を使用したファイルへの出力は特別にサポートされていないため、モード "wU" も不正です。

ユニバーサル改行の出力実装はありません。Python プログラムは、これを自分で処理するか、そうでない場合はプラットフォーム固有の規則でファイルを書き込むことが期待されます。この理由は、入力が難しいケースであるためです。さまざまな改行をファイルに出力することは、Python ではすでに十分に簡単です。

これは、実際に試したときに返されるエラーによって示唆されていますUw+

ValueError: universal newline mode can only be used with modes starting with 'r'

Ur+失敗しませんが、書き込み時に置換も行わないことに注意してください。Mac (OS X は Unix の改行を使用) でも実行できf.write('test\r\n')、ファイルに Windows の改行が表示されます。

edit : オフのままにしておく限り、Pythonは実際にはデフォルトでプラットフォーム固有の改行出力を提供してbいるようです。

...デフォルトではテキストモードを使用します。これは、書き込み時に「\n」文字をプラットフォーム固有の表現に変換し、読み取り時に戻す場合があります。

于 2012-09-11T03:18:53.697 に答える