有没有办法打开文件进行读写?
作为一种解决方法,我打开文件进行写入,关闭它,然后再打开它进行读取。但有没有办法为打开读写文件?
答案 0 :(得分:228)
以下是您如何阅读文件,然后写入文件(覆盖任何现有数据),而无需关闭和重新打开:
with open(filename, "r+") as f:
data = f.read()
f.seek(0)
f.write(output)
f.truncate()
答案 1 :(得分:41)
r+
是同时读写的规范模式。这与使用fopen()
系统调用没有什么不同,因为file()
/ open()
只是这个操作系统调用的一个小包装。
答案 2 :(得分:19)
我尝试了类似的东西,它按预期工作:
f = open("c:\\log.log", 'r+b')
f.write("\x5F\x9D\x3E")
f.read(100)
f.close()
其中:
f.read(size) - 要读取文件的内容,请调用f.read(size),即 读取一些数据并将其作为字符串返回。
和
f.write(string)将string的内容写入文件,返回 无。
此外,如果您打开Python tutorial about reading and writing files,您会发现:
'r +'打开文件进行读写。
在Windows上,附加到模式的'b'以二进制模式打开文件,所以 还有'rb','wb'和'r + b'等模式。
答案 3 :(得分:5)
总结I / O行为
| Mode | r | r+ | w | w+ | a | a+ |
| :--------------------: | :--: | :--: | :--: | :--: | :--: | :--: |
| Read | + | + | | + | | + |
| Write | | + | + | + | + | + |
| Create | | | + | + | + | + |
| Cover | | | + | + | | |
| Point in the beginning | + | + | + | + | | |
| Point in the end | | | | | + | + |
和决策分支