[python] What's the difference between 'r+' and 'a+' when open file in python?

I have try r+ and a+ to open file and read and write, but 'r+' and 'a+' are all append the str to the end of the file.

So, what's the difference between r+ and a+ ?


Add:

I have found the reason:

I have read the file object and forgot to seek(0) to set the location to the begin

This question is related to python

The answer is


If you have used them in C, then they are almost same as were in C.

From the manpage of fopen() function : -

  • r+ : - Open for reading and writing. The stream is positioned at the beginning of the file.

  • a+ : - Open for reading and writing. The file is created if it does not exist. The stream is positioned at the end of the file. Subse- quent writes to the file will always end up at the then current end of file, irrespective of any intervening fseek(3) or similar.

One difference is for r+ if the files does not exist, it'll not be created and open fails. But in case of a+ the file will be created if it does not exist.