【发布时间】:2020-12-28 02:09:12
【问题描述】:
我正在移植一些 Python 2 遗留代码并且我有这个类:
class myfile(file):
"Wrapper for file object whose read member returns a string buffer"
def __init__ (self, *args):
return file.__init__ (self, *args)
def read(self, size=-1):
return create_string_buffer(file.read(self, size))
它像一个文件对象一样使用:
self._file = myfile(name, mode, buffering)
self._file.seek(self.si*self.blocksize)
我正在尝试像这样在 Python 3 中实现它:
class myfile(io.FileIO):
"Wrapper for file object whose read member returns a string buffer"
def __init__(self, name, mode, *args, **kwargs):
super(myfile, self).__init__(name, mode, closefd=True, *args, **kwargs)
def read(self, size=-1):
return create_string_buffer(self.read(size))
问题在于 FileIO 的构造函数没有采用 buffering 参数,Python 会抛出 TypeError: fileio() takes at most 3 arguments (4 given) 错误。
Python 3 open function 是我需要的。我可以继承吗?我查看了PyFile_FromFd class,但它需要一个打开的文件描述符,我担心行为会不一样。
谢谢!!!
【问题讨论】:
-
您确定不再需要该课程吗?
create_string_buffer是做什么的?
标签: python python-3.x python-2.x porting