在' rt'中打开文件和' wt'模式

时间:2014-04-14 02:33:03

标签: python file file-io

这里有几次我已经看到人们使用rtwt模式来阅读和编写文件。

例如:

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

我没有看到模式documented,但由于open()没有抛出错误 - 看起来使用起来非常合法。

使用wtwrtr之间有什么区别?

4 个答案:

答案 0 :(得分:146)

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

记录here

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

答案 1 :(得分:9)

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

除了U之外,这些模式标志直接来自标准C库的fopen()函数,python2 documentation open()的第六段中记录了这一事实。t

据我所知,{{1}}不是,也从未成为C标准的一部分,所以尽管C库的许多实现仍然接受它,但不能保证它们都会,但不能保证它将适用于python的每个构建。这就解释了为什么python2文档没有列出它,以及为什么它一般都有效。 python3 docs使其正式化。

答案 2 :(得分:4)

' r'是为了阅读,' w'写作和' a'是为了追加。

''表示文本模式为二进制模式。

  

在这里几次,我发现人们使用rt和wt模式来读写文件。

编辑:你确定你看过rt而不是rb吗?

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

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

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

您提供的文档链接也引用了此b模式:

追加' b'即使在不以不同方式处理二进制文件和文本文件的系统上,它也可用作文档。

答案 3 :(得分:3)

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