5

我有以下 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)
4

2 回答 2

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()

希望能帮助到你!

于 2013-11-05T14:46:23.203 回答
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 名称,它会隐藏内置的。

于 2013-11-05T14:47:54.477 回答