web-dev-qa-db-ja.com

「rt」および「wt」モードでファイルを開く

ここSOで何度か、ファイルの読み取りと書き込みにrtおよびwtモードを使用している人々を見てきました。

例えば:

with open('input.txt', 'rt') as input_file:
     with open('output.txt', 'wt') as output_file: 
         ...

モードは表示されません 文書化された ですが、open()はエラーをスローしないため、使用するのはかなり合法であるように見えます。

wt vs wrt vs rの使用には何の違いがありますか?

89
alecxe

tはテキストモードを指します。テキストモードがデフォルトであるため、rrtまたはwwtに違いはありません。

文書化 ここ

Character   Meaning
'r'     open for reading (default)
'w'     open for writing, truncating the file first
'x'     open for exclusive creation, failing if the file already exists
'a'     open for writing, appending to the end of the file if it exists
'b'     binary mode
't'     text mode (default)
'+'     open a disk file for updating (reading and writing)
'U'     universal newlines mode (deprecated)

デフォルトのモードは'r'(テキストの読み取り用に開かれ、'rt'の同義語)です。

155
devnull

tはテキストモードを示します。つまり、\n文字は、ファイルへの書き込み時にホストOSの行末に変換され、読み取り時に再び戻されます。テキストモードがデフォルトであるため、フラグは基本的に単なるノイズです。

U以外に、これらのモードフラグは標準Cライブラリの fopen() 関数から直接取得されます。これは、 open()のpython2ドキュメント .

私の知る限り、tはC標準の一部ではないため、C標準の一部ではないため、Cライブラリの多くの実装はそれを受け入れますが、すべてがそうなるという保証はなく、したがって、そうなるという保証もありませんPythonのすべてのビルドで動作します。 python2のドキュメントにリストされていない理由と、とにかく一般的に機能する理由が説明されています。 python3 docs は公式にします。

9
ʇsәɹoɈ

「r」は読み取り用、「w」は書き込み用、「a」は追加用です。

「t」は、バイナリモードと同等のテキストモードを表します。

ここでSOで数回、ファイルの読み取りと書き込みにrtモードとwtモードを使用している人を見てきました。

編集:rbではなくrtを確認しましたか?

これらの関数は通常、ここで説明するfopen関数をラップします。

http://www.cplusplus.com/reference/cstdio/fopen/

ご覧のとおり、バイナリモードでファイルを開くためにbを使用することに言及しています。

あなたが提供したドキュメントリンクは、このbモードへの参照も作成します:

「b」を追加すると、バイナリファイルとテキストファイルの扱いが異なり、ドキュメントとして機能するシステムでも役立ちます。

4
jussij

ttext modeを示します

https://docs.python.org/release/3.1.5/library/functions.html#open

linuxでは、テキストモードとバイナリモードに違いはありませんが、Windowsでは、テキストモードのときに\n\r\nに変換します。

http://www.cygwin.com/cygwin-ug-net/using-textbinary.html

3
ymonad