0

假设我有以下代码,

file1 = open("myfile","w")

#Write to file1...

#Open Second File
file2 = open("otherfile","w")

#Write to file2...

file1.close()

file1 = file2

file2.close()

这会有效地导致所有文件都被关闭,还是 file1 仍然有一个可以写入的打开文件(其他文件)?

4

3 回答 3

2

是的。(澄清一下,两个文件对象都将被关闭,并且无法写入)变量名只是对底层对象的引用。当您close()在对象上调用该方法时,它会访问该对象并执行该方法。如果您事后检查这两个对象,您可以知道:

>>> file1
<closed file 'file2.txt', mode 'w' at 0x10045e930>
>>> file2
<closed file 'file2.txt', mode 'w' at 0x10045e930>
>>> 

请注意,在这种情况下,您设置file1 = file2它们都引用同一个关闭的文件对象。如果没有更多对原始file1对象的引用,则该对象将被垃圾回收。

于 2012-06-28T16:52:19.863 回答
1

不,通过您的倒数第二行file1file2引用同一个文件对象,该文件对象由file2.close(). Python 变量只是指向对象的名称,因此您对一个名称所做的操作会发生在指向该对象的所有名称上。

于 2012-06-28T16:52:09.630 回答
0

由于您在重新分配之前关闭了 file1,因此这两个文件都已关闭

于 2012-06-28T16:54:00.263 回答