我想知道将一个文件读取到另一个文件是否完全安全(在关闭缓冲区之前)。对于这样的事情,我会给出的解释是,当使用相同的对象时,函数 open 会自动关闭缓冲区。
示例代码:
fr = open("asd.txt", "r")
text = fr.read()
fr.close
fr = open("asd2.txt", "r")
text = fr.read()
fr.close
...
这是同一件事吗?
fr = open("asd.txt", "r")
text = fr.read()
fr = open("asd2.txt", "r")
text = fr.read()
fr.close
最佳答案
是的,第二行是相同的,因为两个代码段都没有正确关闭文件。
您必须调用 fr.close()
方法来关闭文件对象,如果没有 ()
部分,该方法是只引用,不执行。因此在这两个示例中,当执行第二个 open()
调用时,'asd.txt'
文件对象仍然打开。
在 CPython(可从 Python.org 下载的默认 Python 实现)中,文件对象在不再被引用时会自动关闭,因此一旦第二个 open()
调用返回并被分配,第一个随着对对象的引用被删除,打开的文件被关闭。
但是,您实际上应该使用文件对象作为上下文管理器,使用 with
statement :
with open("asd.txt", "r") as fr:
text = fr.read()
with open("asd2.txt", "r") as fr:
text = fr.read()
而且更有可能的是,为 text
使用不同的变量名,因为现在一个变量名替换了另一个变量名。当 block 结束或该 block 中发生异常时,with
语句中的文件对象将自动关闭。
关于python - 在前一个文件之上读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32681074/