44

我已经尝试打开文件r+a+读取和写入,但 'r+' 和 'a+' 都将 str 附加到文件末尾。

r+那么,和有什么区别a+呢?


添加:

我找到了原因:

我已阅读文件对象并忘记了 seek(0) 将位置设置为开始

4

3 回答 3

72

Python 打开文件的方式几乎与在 C中相同:

  • r+ 开放阅读和写作。流位于文件的开头。

  • a+ 打开以进行读取和附加(在文件末尾写入)。如果文件不存在,则创建该文件。读取的初始文件位置在文件的开头,但输出附加到文件的末尾(但在某些 Unix 系统中,不管当前的查找位置如何)。

于 2012-11-06T09:28:04.977 回答
6

一个区别是r+如果文件不存在,它将不会被创建并且打开失败。但是,如果a+文件不存在,则会创建该文件。

于 2012-11-06T09:28:43.757 回答
5

如果您在 中使用过它们C,那么它们几乎与 C 中的相同。

从功能的手册fopen(): -

  • r+: - 开放阅读和写作。流位于文件的开头。

  • a+: - 开放阅读和写作。如果文件不存在,则创建该文件。流位于文件的末尾。对文件的后续写入将始终在文件的当前末尾结束,而与任何干预 fseek(3) 或类似内容无关。
于 2012-11-06T09:28:50.463 回答