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
vsw
和rt
vsr
有什么区别?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库的函数,这一事实在foropen()
的第六段中有记录
据我所知,
t
不是,也从来不是C标准的一部分,因此尽管C库的许多实现无论如何都接受它,但不能保证它们都会,因此也不能保证它能在python的每个版本上工作。这就解释了为什么python2文档没有列出它,以及为什么它通常都能正常工作。正式发布。明白了,python3文档中记录了它。因此,wt
vsw
和rt
vsr
之间基本没有区别-只是显式优于隐式
?@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
实例)。