<p><code>with</code>语法仅在python2.6中完全启用。你知道吗</p>
<p>必须使用Python 2.5或更早版本:</p>
<pre><code>Python 2.5.5 (r255:77872, Nov 28 2010, 19:00:19)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> with open("travellerList.txt", "a") as myfile:
<stdin>:1: Warning: 'with' will become a reserved keyword in Python 2.6
File "<stdin>", line 1
with open("travellerList.txt", "a") as myfile:
^
SyntaxError: invalid syntax
</code></pre>
<p>在Python2.5中使用<code>from __future__ import with_statement</code>启用语法:</p>
<pre><code>>>> from __future__ import with_statement
>>> with open("travellerList.txt", "a") as myfile:
... pass
...
</code></pre>
<p>从<a href="http://docs.python.org/2/reference/compound_stmts.html#the-with-statement" rel="nofollow">^{<cd1>} statement specification</a>:</p>
<blockquote>
<p><em>New in version 2.5.</em></p>
<p>[...]</p>
<p><strong>Note</strong>: In Python 2.5, the <code>with</code> statement is only allowed when the <code>with_statement</code> feature has been enabled. It is always enabled in Python 2.6.</p>
</blockquote>
<p>将文件用作上下文管理器的意义在于它将自动关闭,因此<code>myfile.close()</code>调用是多余的。你知道吗</p>
<p>对于Python2.4或更早版本,恐怕您运气不好。您必须使用<code>try</code>-<code>finally</code>语句:</p>
<pre><code>myfile = None
try:
myfile = open("travellerList.txt", "a")
# Work with `myfile`
finally:
if myfile is not None:
myfile.close()
</code></pre>