Python 在';rt';和';wt';模式

Python 在';rt';和';wt';模式,python,file,file-io,read-write,Python,File,File Io,Read Write,在这里我见过好几次人们使用rt和wt模式来读写文件 例如: with open('input.txt', 'rt') as input_file: with open('output.txt', 'wt') as output_file: ... 我看不到模式,但由于open()不会抛出错误,因此使用它看起来非常合法 使用wtvsw和rtvsr有什么区别?r表示读取,“w”表示写入,“a”表示追加 “t”表示与二进制模式相同的文本模式 在这里我见过很多人使用rt和

在这里我见过好几次人们使用
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
有什么区别?

r表示读取,“w”表示写入,“a”表示追加

“t”表示与二进制模式相同的文本模式

在这里我见过很多人使用rt和wt模式读写文件

编辑:您确定看到的是rt而不是rb吗

这些函数通常包装fopen函数,如下所述:

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

您提供的文档链接也参考了此b模式:


即使在不以不同方式处理二进制文件和文本文件的系统上,添加“b”也很有用,因为它可以作为文档使用。

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

记录:

字符含义
“r”打开进行读取(默认)
“w”打开以进行写入,首先截断文件
“x”打开以独占方式创建,如果文件已存在,则失败
“a”打开进行写入,如果文件存在,则追加到文件末尾
“b”二进制模式
“t”文本模式(默认)
“+”打开磁盘文件进行更新(读写)
“U”通用换行符模式(已弃用)

默认模式为
'r'
(打开阅读文本,同义词为
'rt'
)。

t
表示
文本模式

在linux上,文本模式和二进制模式没有区别, 但是,在windows中,当使用文本模式时,它们会将
\n
转换为
\r\n


t表示文本模式,这意味着
\n
字符将在写入文件时转换为主机操作系统的行尾,在读取时再次转换。该标志基本上只是噪声,因为文本模式是默认模式

除了
U
,这些模式标志直接来自标准C库的函数,这一事实在for
open()
的第六段中有记录


据我所知,
t
不是,也从来不是C标准的一部分,因此尽管C库的许多实现无论如何都接受它,但不能保证它们都会,因此也不能保证它能在python的每个版本上工作。这就解释了为什么python2文档没有列出它,以及为什么它通常都能正常工作。正式发布。

明白了,python3文档中记录了它。因此,
wt
vs
w
rt
vs
r
之间基本没有区别-只是
显式优于隐式
?@alecxe对,因为文本模式是默认模式,所以
r
rt
之间没有区别……请注意
w
并不总是等于
wt
。其中一种情况是二进制模式是默认模式,而不是文本模式。相关问题:是的,很明显是
rt
,例如,等等。感谢您提供的信息,很高兴知道。在devnull提供的链接中列出了“t”文本选项。让我吃惊的是,C++链接并没有提到“t”选项,因为我确信我在几年前编写的C fOn代码中使用了“RT”和“WT”选项。是的,这就是为什么我问过的——这对我来说就像是一个没有文档的特性。希望这条线将来能帮助别人。再次感谢。在Python3中,文本和二进制文件模式(在所有平台上)之间还有一个额外的区别。在文本模式下,
read
返回Unicode字符串。在二进制模式下,
read
返回一个
bytes
实例。如果您想在编写Python 2代码时考虑到向前兼容性,可以使用
io.open
而不是标准的
open
来获得Python 3行为(使用
unicode
str
实例)。