以写入模式打开文件后嵌套 'r'

Nesting 'r' after opening a file in write mode

所以我做了一个练习,要求写入一个文件(使用换行符),然后以阅读模式打开它。我正是这样做的,控制台输出了正确的结果。发生的事情是,我试图在 'w' 模式代码块中执行此操作,但控制台没有输出任何内容。

例如:

with open('test.txt', 'w') as wf:

    nicknames = ["Big Tuna", "Prison Mike", "Booster Seat"]

    wf.write('\n'.join(nicknames))

    with open('test.txt', 'r') as rf:

        print(rf.read())

我知道程序只在 with 语句之后关闭文件,但我需要澄清我对这里发生的事情的理解。

所以,到目前为止我的理解是程序首先创建 test.txt 文件(test.txt 在我的文件路径中不存在)然后继续转换并写入给定的内容test.txt 文件。之后,嵌套的 with 尝试以阅读模式打开名为 test.txt 的文件,但是控制台不会输出任何内容,因为程序试图打开一个已经打开的文件,这就是为什么它不能读入一个已经打开的文件。

上面的理解有误,请指正,因为我不确定自己是否理解正确,谢谢。

事实并非如此。至少,Unix 系统会很乐意让您多次打开一个文件。

然而,Python的IO默认是缓冲的。您需要刷新 写入文件的数据,然后才能从中读取数据。有关此的更多信息,请参阅 https://docs.python.org/3/library/io.html#io.IOBase.flush。 (总结:将 wf.flush() 放在 wf.write(…) 调用之后并尝试从中读取之前。