ConfigParser.read_文件在Python 3中是否需要一个iterable类作为参数,而之前它没有这样做?

2024-09-30 12:23:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段用于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()使我的函数可移植

为混乱的帖子提前道歉。我真的没有太多时间来正确构建它

问候


Tags: 函数ioselfobjectdefopeniterableconfigparser

热门问题