0

我有以下代码,我想将一些文本添加到已经存在的文件中。

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

但我得到:

SyntaxError:无效的语法

错误指向打开命令中的 n。有人可以帮助我了解我在上面的代码片段中犯错的地方吗?

4

2 回答 2

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

from __future__ import with_statement在 Python 2.5 中使用以启用那里的语法:

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

with声明规范

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()
于 2013-04-16T14:10:32.383 回答
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如果无法升级,请在文件顶部使用。

最后一件事,我知道ReplyTraveller 是什么,但是您将它命名为一个类,它需要是一个字符串才能将其写入文件。

于 2013-04-16T14:10:29.107 回答