以“ rt”和“ wt”模式打开文件

在这里,我曾多次看到人们使用 rtwt模式来读写文件。

例如:

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

我没有看到模式 记录在案,但因为 open()不抛出一个错误-看起来它是非常合法的使用。

它的用途是什么? 使用 wtwrtr有什么区别吗?

150257 次浏览

‘ r’表示读,‘ w’表示写,‘ a’表示附加。

T 表示与二进制模式相对应的文本模式。

在这里,我曾多次看到人们使用 rt 和 wt 模式来读写文件。

编辑: 你确定你看到的是 rt 而不是 rb?

这些函数通常包含下面描述的 Fopen函数:

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

正如您所看到的,它提到了使用 b 以二进制模式打开文件。

你提供的文件链接也提到了这个 b 模式:

即使在不区别对待二进制文件和文本文件的系统上,附加“ b”也很有用,因为它可以作为文档。

t指的是文本模式。rrtwwt之间没有区别,因为文本模式是默认模式。

给你文件:

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'的同义词)。

t表示 text mode

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

在 linux 上,文本模式和二进制模式没有区别, 但是,在窗口中,它们在文本模式下将 \n转换为 \r\n

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

t表示文本模式,这意味着 \n字符在写入文件时将被转换为主机操作系统行结束符,在读取时又被转换回来。标志基本上只是噪音,因为文本模式是默认的。

除了 U之外,这些模式标志直接来自标准 C 库的 fopen()函数,这个事实在 Python2文档 for open()的第六段中有记载。

据我所知,t不是也从来没有成为 C 标准的一部分,所以尽管许多 C 库的实现都接受它,但不能保证它们都会接受,因此也不能保证它能在每一个 Python 版本中工作。这就解释了 python2文档为什么没有列出它,以及为什么它总是能够工作。Python3文档让它变得正式。