附加到文件时出现问题

时间:2013-04-16 14:08:14

标签: python

我有以下代码,我想在现有文件中添加一些文字。

with open("travellerList.txt", "a") as myfile:
    myfile.write(ReplyTraveller)
myfile.close()

但我得到了:

SyntaxError:语法无效

错误指向open命令中的n。有人可以帮助我理解我在上面的片段中犯了哪些错误吗?

2 个答案:

答案 0 :(得分:4)

with语法仅在Python 2.6中完全启用。

您必须使用Python 2.5或更早版本:

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

在Python 2.5中使用from __future__ import with_statement来启用语法:

>>> from __future__ import with_statement
>>> with open("travellerList.txt", "a") as myfile:
...     pass
... 

来自with statement specification

  

2.5版中的新功能。

     

[...]

     

注意:在Python 2.5中,仅在启用with功能时才允许with_statement语句。它始终在Python 2.6中启用。

将文件用作上下文管理器的意义在于它会自动关闭,因此myfile.close()调用是多余的。

对于Python 2.4或更早版本,你很不幸,我很害怕。您必须使用try - finally语句:

myfile = None
try:
    myfile = open("travellerList.txt", "a")
    # Work with `myfile`
finally:
    if myfile is not None:
        myfile.close()

答案 1 :(得分:0)

你需要摆脱myfile.close()。这很好用:

with open("travellerList.txt", "a") as myfile:
    myfile.write(ReplyTraveller)

with块将在块结束时自动关闭myfile。当你试图自己关闭它时,它实际上已经超出了范围。

但是,您似乎正在使用早于2.6的python,其中添加了with语句。尝试升级python,或者如果无法升级,请使用文件顶部的from __future__ import with_statement

最后一件事,idk是什么,回复旅行者,但你把它命名为一个类,它需要是一个字符串,将其写入文件。