How to open a file for both reading and writing?

Is there a way to open a file for both reading and writing?

As a workaround, I open the file for writing, close it, then open it again for reading. But is there a way to open a file for both reading and writing?

3

4 Answers

Here's how you read a file, and then write to it (overwriting any existing data), without closing and reopening:

with open(filename, "r+") as f: data = f.read() f.seek(0) f.write(output) f.truncate() 
13

Summarize the I/O behaviors

Mode r r+ w w+ a a+
Read + + + +
Write + + + + +
Create + + + +
Cover + +
Point in the beginning + + + +
Point in the end + +

and the decision branch

enter image description here

6

r+ is the canonical mode for reading and writing at the same time. This is not different from using the fopen() system call since file() / open() is just a tiny wrapper around this operating system call.

3

I have tried something like this and it works as expected:

f = open("c:\\log.log", 'r+b') f.write("\x5F\x9D\x3E") f.read(100) f.close() 

Where:

f.read(size) - To read a file’s contents, call f.read(size), which reads some quantity of data and returns it as a string.

And:

f.write(string) writes the contents of string to the file, returning None.

Also if you open Python tutorial about reading and writing files you will find that:

'r+' opens the file for both reading and writing.

On Windows, 'b' appended to the mode opens the file in binary mode, so there are also modes like 'rb', 'wb', and 'r+b'.

2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like