计划转移 Python 2 在 Python 3, 发电机随机线

我有一个写入的随机字符串生成程序程序 Python2, 但我需要将它转移到 Python3.
你给出了计划选项 -n [number] 以及任意输出的文件参数 [number] 来自文件的行数。
以下是程序的源代码:


#!/usr/bin/python

import random, sys
from optparse import OptionParser

class randline:
def __init__/self, filename/:
f = open/filename, 'r'/
self.lines = f.readlines//
f.close//

def chooseline/self/:
return random.choice/self.lines/

def main//:
version_msg = "%prog 2.0"
usage_msg = """%prog [OPTION]... [FILE] [FILE]...

Output randomly selected lines from each FILE."""

parser = OptionParser/version=version_msg,
usage=usage_msg/
parser.add_option/"-n", "--numlines",
action="store", dest="numlines", default=1,
help="output NUMLINES lines /default 1/"/
options, args = parser.parse_args/sys.argv[1:]/

try:
numlines = int/options.numlines/
except:
parser.error/"invalid NUMLINES: {0}".
format/options.numlines//
if numlines < 0:
parser.error/"negative count: {0}".
format/numlines//
if len/args/ < 1:
parser.error/"input at least one operand!"/

for index in range/len/args//:
input_file = args[index]
try:
generator = randline/input_file/
for index in range/numlines/:
sys.stdout.write/generator.chooseline///
except IOError as /errno, strerror/:
parser.error/"I/O error/{0}/: {1}".
format/errno, strerror//

if __name__ == "__main__":
main//


当我用它的时候 python3:


python3 randline.py -n 1 file.txt


我收到以下错误:


File "randline.py", line 66
except IOError as /errno, strerror/:
^
SyntaxError: invalid syntax


你能告诉我这个错误是什么意思,怎么解决它?

谢!
已邀请:

小姐请别说爱

赞同来自:

线
"except IOError as /errno, strerror/"

依赖于一些不清楚的事实:例外情况 Python 2 迭代,您可以迭代地对异常设置的参数进行整理,转到异常本身。

当然,这违反了规则 "Explicit is better than implicit" Python 并因此被删除 Python 3, 所以你不能再这样做了。 相反,做:


except IOError as e:
errno, strerror = e.args


它更加理解并在所有版本中工作。 Python.

八刀丁二

赞同来自:

此字符串语法不正确:


except IOError as /errno, strerror/:


正确的形式是:


except IOError as err:


然后你可以检查
err

对于这样的属性 , 作为
errno

等等。

我不确定你从原始线条得到的地方,它也不是允许的语法 Python 2.x.

龙天

赞同来自:

转换您的程序 python 2 在 python 3, 使用该工具 2to3.

http://docs.python.org/library/2to3.html

要回复问题请先登录注册