2012-06-28 46 views
0

比方說,我有以下代碼,簡單的Python文件/對象實例

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

#Write to file1... 

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

#Write to file2... 

file1.close() 

file1 = file2 

file2.close() 

請問這個有效地導致所有文件被關閉或將file1中仍然有一個開放的文件(otherfile),可以寫入仍然?

回答

2

是的。 (爲了澄清,這兩個文件對象都將被關閉,並且將不能被寫入) 變量名稱只是對基礎對象的引用。當您調用對象上的close()方法時,它會訪問該對象並執行該方法。如果你檢查這兩個對象之後,你可以告訴:

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

注意,在這種情況下,您可以設置file1 = file2,因此它們都指向同一個關閉的文件對象。如果沒有更多對原始file1對象的引用,則該對象將被垃圾收集。

1

不,您的倒數第二行file1file2指的是相同的文件對象,由file2.close()關閉。 Python變量只是指向對象的名字,所以你對一個名字做的事情發生在指向該對象的所有名字上。

0

由於您在重新分配文件之前關閉了文件1,因此兩個文件都關閉了