由于版本的Python错误?
问题描述:
我想运行一个基本的随机语句生成器来测试我的web服务器的python ......它所做的全部是打开3个文件,并从每个文件中随机选择一行。由于版本的Python错误?
它做我的笔记本电脑运行正常,但在Web服务器上失败和代码的一部分(我从另一个堆栈溢出的问题在这里得到了部分 - How to get line count cheaply in Python?)生成语法错误。
的错误是:
File "sentence.py", line 17
with open(fname) as f:
SyntaxError: invalid syntax
而且有错误的部分是:
def file_len(fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
服务器使用Python 2.4.3
没有人在这里看到一个现实的问题?
答
的with
statement只有在Python 2.5提供和更新:
新版本2.5。
使用try..finally
结构来代替:
def file_len(fname):
f = open(fname)
try:
for i, l in enumerate(f):
pass
finally:
f.close()
return i + 1
+0
谢谢 - 这工作得很好!无法升级服务器,因为他们不会让我......但他们会很快对它进行排序。目前这是一个有用的解决方法。对于重复的问题抱歉...我将来会更加小心。 – joep1 2014-10-01 22:30:10
的'with'声明没有出台,直到Python 2.5的 – 2014-09-30 14:04:26
一个Web服务器上运行这样一个老的Python可能不是一个好主意。 Python 2.4.3于2006年发布。最后一个针对2.4的bug修正于2008年发布。我鼓励您将Python更新为更新的版本。您不仅可以访问更多功能,还可以获得更少的错误和更多的安全修复程序。 – 2014-09-30 15:25:04