我有以下代码,我想在现有文件中添加一些文字。
with open("travellerList.txt", "a") as myfile:
myfile.write(ReplyTraveller)
myfile.close()
但我得到了:
SyntaxError:语法无效
错误指向open命令中的n。有人可以帮助我理解我在上面的片段中犯了哪些错误吗?
答案 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是什么,回复旅行者,但你把它命名为一个类,它需要是一个字符串,将其写入文件。