2016-01-20 115 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

相关问题