2016-01-20 152 views
1

我執行以下操作:當文件被刪除時,文件句柄會發生什麼?

Fo=open ('file','w') 
Fo.close() 

Import os 
Os. Remove('file') 

Print fo.read() 

上執行,我得到:ValueError異常:在關閉的文件I/O操作。

1)這意味着即使文件被刪除,python仍然可以識別文件句柄。它爲什麼這樣做?

2)爲什麼我得到ValueError?

3)在什麼情況下我們會得到IOError?

編輯:我想讓自己更清楚: 爲什麼我得到一個值的錯誤操作在一個封閉的文件? 我們一般得到ValueError異常的事情是這樣的:

int('abc') 

當錯誤的值給出。在一個封閉的文件上運行似乎是與IO相關的東西。任何人都可以澄清?

回答

1
  1. 不,這意味着file對象仍然存在。

  2. file本身不適合大多數操作,因此它有/無效值。

  3. 無。該文件已關閉,因此不會發生I/O。

+0

對於1)是的,那是我的問題。爲什麼文件對象在文件被刪除後仍然存在? (我用'文件句柄'代替)保持它的目的是什麼? 3)你能舉個IOError發生的例子嗎? – Tinkidinki

+1

1)因爲'file'對象仍然被變量'Fo'引用。它與「目的」無關,而與對象生命週期無關。您可以在使用之前檢查'closed'屬性 – mementum

+1

3)執行'read'操作時硬盤無法訪問512bytes扇區 – mementum

相關問題