为什么 read() 不能在 open() 函数 python 中使用 'w+' 或 'r+' 模式

Why does read() not work with 'w+' or 'r+' mode in open() function python

当我用 'r+' 或 'w+' 参数打开时,它不想读取文本文件。

内部文本文档:

hello

Python 代码示例:

代码:

with open(file_name, 'r') as o:
    print(o.read())

输出:

hello

代码:

with open(file_name, 'r+') as o:
    print(o.read())

输出:


代码:

with open(file_name, 'w+') as o:
    o.write('hello')
    print(o.read())

输出:


我也试过设置o.read()为变量然后打印出来,还是没有输出。如果有人能告诉我为什么会这样,那就太好了。

with open(file_name, 'r') as o:
    print(o.read())

输出 hello 因为文件已打开以供读取

with open(file_name, 'r+') as o:
    print(o.read())

同时输出hello,因为文件仍处于打开状态以供读取

with open(file_name, 'w+') as o:
    print(o.read())

没有输出,因为文件被截断了。

有关详细信息,请参阅 https://docs.python.org/3/library/functions.html#open

with open(file_name, 'r') as o:
    print(o.read())

输出你好,如你所说。

with open(file_name, 'r+') as o:
    print(o.read())

也输出hello。我不知道你为什么说它什么都不输出

with open(file_name, 'w+') as o:
    o.write('hello')
    print(o.read())

不输出任何内容,因为'w+'丢弃了文件的当前内容,然后在您将hello写入文件,文件指针位于文件末尾,读取尝试从该点读取。要阅读您所写的内容,您需要先回到文件的开头:

with open(file_name, 'w+') as o:
    o.write('hello')
    o.seek(0)
    print(o.read())

打印:

hello

有关详细信息,请参阅 https://docs.python.org/3/library/functions.html#open