我有以下python代码,它与python 2.7一起工作正常,但我想在python 2.5上运行它。
我是Python新手,我尝试多次更改脚本,但我总是遇到语法错误。下面的代码会抛出SyntaxError: Invalid syntax
:
#!/usr/bin/env python
import sys
import re
file = sys.argv[1]
exp = sys.argv[2]
print file
print exp
with open (file, "r") as myfile:
data=myfile.read()
p = re.compile(exp)
matches = p.findall(data)
for match in matches:
print " ".join("{0:02x}".format(ord(c)) for c in match)
答案 0 :(得分:21)
Python 2.5尚不支持with
语句。
要在Python 2.5中使用它,您必须从__future__
导入它:
## This shall be at the very top of your script ##
from __future__ import with_statement
或者,与之前的版本一样,您可以手动执行此过程:
myfile = open(file)
try:
data = myfile.read()
#some other things
finally:
myfile.close()
希望它有所帮助!
答案 1 :(得分:3)
Python 2.5没有with
代码块支持。
请改为:
myfile = open(file, "r")
try:
data = myfile.read()
p = re.compile(exp)
matches = p.findall(data)
for match in matches:
print " ".join("{0:02x}".format(ord(c)) for c in match)
finally:
myfile.close()
注意:您不应该使用file
作为文件的名称,它是内部Python名称,它会遮挡内置的。