我有以下代码,我想将一些文本添加到已经存在的文件中。
with open("travellerList.txt", "a") as myfile:
myfile.write(ReplyTraveller)
myfile.close()
但我得到:
SyntaxError:无效的语法
错误指向打开命令中的 n。有人可以帮助我了解我在上面的代码片段中犯错的地方吗?
我有以下代码,我想将一些文本添加到已经存在的文件中。
with open("travellerList.txt", "a") as myfile:
myfile.write(ReplyTraveller)
myfile.close()
但我得到:
SyntaxError:无效的语法
错误指向打开命令中的 n。有人可以帮助我了解我在上面的代码片段中犯错的地方吗?
该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()
你需要摆脱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 是什么,但是您将它命名为一个类,它需要是一个字符串才能将其写入文件。