# open函数
# `open`函数
[open](http://docs.python.org/dev/library/functions.html#open) 函数可以打开一个文件。超级简单吧?大多数时候,我们看到它这样被使用:
~~~
f = open('photo.jpg', 'r+')
jpgdata = f.read()
f.close()
~~~
我现在写这篇文章的原因,是大部分时间我看到`open`被这样使用。有**三个**错误存在于上面的代码中。你能把它们全指出来吗?如不能,请读下去。在这篇文章的结尾,你会知道上面的代码错在哪里,而且,更重要的是,你能在自己的代码里避免这些错误。现在我们从基础开始:
`open`的返回值是一个文件句柄,从操作系统托付给你的Python程序。一旦你处理完文件,你会想要归还这个文件句柄,只有这样你的程序不会超出一次能打开的文件句柄的数量上限。
显式地调用`close`关闭了这个文件句柄,但前提是只有在read成功的情况下。如果有任意异常正好在`f = open(...)`之后产生,`f.close()`将不会被调用(取决于Python解释器的做法,文件句柄可能还是会被归还,但那是另外的话题了)。为了确保不管异常是否触发,文件都能关闭,我们将其包裹成一个`with`语句:
~~~
with open('photo.jpg', 'r+') as f:</