2014-09-30 130 views
-1

我想运行一个基本的随机语句生成器来测试我的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

没有人在这里看到一个现实的问题?

+2

的'with'声明没有出台,直到Python 2.5的 – 2014-09-30 14:04:26

+0

一个Web服务器上运行这样一个老的Python可能不是一个好主意。 Python 2.4.3于2006年发布。最后一个针对2.4的bug修正于2008年发布。我鼓励您将Python更新为更新的版本。您不仅可以访问更多功能,还可以获得更少的错误和更多的安全修复程序。 – 2014-09-30 15:25:04

回答

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