2014-09-30 129 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