2
我看到人们偶尔打开内置的file
的文件处理程序;特别是在pyyaml documentation。Python打开和文件
这让我困惑的Python documentation状态:
当打开一个文件,这是最好使用的open()的,而不是直接调用此构造。文件更适合于类型测试(例如,编写isinstance(f,file))。
所以这似乎暗示,file
和open
做同样的事情,但file
是一个类型,而open
是一个函数:
>>> open
<built-in function open>
>>> file
<type 'file'>
,他们都返回file
类型的对象:
>>> open('/dev/zero')
<open file '/dev/zero', mode 'r' at 0x7f9bb0b964b0>
>>> file('/dev/zero')
<open file '/dev/zero', mode 'r' at 0x7f9bb0b96540>
有没有区别o f使用其中一个还是另一个?
是否有使用file
vs open
打开文件的注意事项或优点?
不完全正确; 'open'允许你在'with'语句中使用它作为上下文管理器,以便在你的代码中处理该文件的错误中正确关闭该文件。 – aruisdante 2015-03-02 18:49:02
'open'是一个比较好的方法(工厂vs构造函数),另外''file'自3.0以来就被删除了。而且,@aruisdante,'file'也可以在上下文管理器中使用。 – bereal 2015-03-02 18:52:22
@bereal呵,果然可以。但我完全同意你关于使用工厂和具体类型构造函数的观点,特别是在像鸭子这样的鸭子类动态语言中。 – aruisdante 2015-03-02 18:53:54