开发者

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 workarou开发者_StackOverflow中文版nd, 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?


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()


Summarize the I/O behaviors:

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

Decision tree for the table above:

How to open a file for both reading and writing?


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.


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'.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜