我有一段用于Python 2.7的代码:
ConfigParser.readfp(PropertiesReader(open(str_PathToConnectionFile)))
作为PropertiesReader的以下类别:
class PropertiesReader(object):
def __init__(self, PropertiesFile):
self._PropertiesFile = PropertiesFile
self._FakeHeader = '[tasection]\n'
def __iter__(self):
super().__iter__()
def readline(self):
if self._FakeHeader:
try:
return self._FakeHeader
finally:
self._FakeHeader = None
else:
return self._PropertiesFile.readline()
和open(str_PathToConnectionFile)返回类io.TextIOWrapper(io.IOBase的子类)的实例
我认为函数.readfp在Py 2.7中允许了一个不可iterable的输入参数,因为PropertiesReader(open(str_PathToConnectionFile))
是不可iterable的,不会引发任何问题
在迁移到Python 3.7之后,我在这行中唯一更改的是readfp,因为它现在已被弃用:
ConfigParser.read_file(PropertiesReader(open(str_PathToConnectionFile)))
但是现在程序抛出一个异常,因为read_文件中的参数是不可iterable的
该函数的需求是否从Python 2更改为Python 3?如果是这样的话,我很惊讶我在文献中没有发现这方面的任何提及
另外,我想知道语法class PropertiesReader(object):
是否意味着PropertiesReader实例继承对象拥有的任何类。如果是这种情况,它将从io.IOBase继承所有方法,作为其中的一个。在这种情况下,我是否应该使用super()
使我的函数可移植
为混乱的帖子提前道歉。我真的没有太多时间来正确构建它
问候
目前没有回答
相关问题 更多 >
编程相关推荐