Открытие файлов в режимах' rt 'и' wt'


несколько раз здесь, поэтому я видел, как люди используют rt и wt режимы чтения и записи файлов.

например:

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

Я не вижу режима документирована, но поскольку open() не бросает ошибку-похоже, что это в значительной степени законно использовать.

для чего это нужно и есть ли разница между использованием wt vs w и rt vs r?

4 68

4 ответа:

t относится к текстовому режиму. Нет никакой разницы между r и rt или w и wt так как текстовый режим по умолчанию.

документирована здесь:

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').

The t указывает на текстовый режим, что означает \n символы будут переведены в конец строки ОС хоста при записи в файл и обратно при чтении. Флаг-это в основном просто шум, так как по умолчанию используется текстовый режим.

кроме U, эти флаги режима поступают непосредственно из стандартной библиотеки C fopen() функция, факт, который задокументирован в шестом абзаце документация python2 для open().

насколько я знаю, t не является и никогда не был частью стандарта C, поэтому, хотя многие реализации библиотеки C принимают его в любом случае, нет никакой гарантии, что все они будут, и поэтому нет гарантии, что он будет работать на каждой сборке python. Это объясняет, почему python2 docs не перечислял его, и почему он вообще работал в любом случае. Элемент python3 docs сделать это официально.

'r' для чтения,' w 'для записи и' a ' для добавления.

" Т " представляет текстовом режиме, а не бинарном режиме.

несколько раз здесь, поэтому я видел людей, использующих режимы rt и wt для чтения и записи файлов.

Edit: вы уверены, что видели rt, а не rb?

эти функции обычно обертывают fopen функция, которая описана здесь:

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

Как вы можете видеть, он упоминает использование b для открытия файла в двоичном режиме.

ссылка на документ, которую вы предоставили, также ссылается на этот режим b:

добавление 'b' полезно даже в системах, которые не обрабатывают двоичные и текстовые файлы по-разному, где он служит в качестве документации.

t показывает text 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