gpt4 book ai didi

python - 通过子类化 `io.TextIOWrapper` 来子类化文件——但是它的构造函数有什么签名?

转载 作者:太空狗 更新时间:2023-10-29 21:56:42 26 4
gpt4 key购买 nike

我正在尝试在 this post 之后子类化 io.TextIOWrapper ,虽然我的目标不同。从这个开始(注意:motivation):

class MyTextIOFile(io.TextIOWrapper):
def read(self, *args):
cont = super().read(*args)
return cont.replace("\x00", "")

我正在尝试使用我的构造函数打开一个文件

In [81]: f = MyTextIOFile("file.csv")

但这给出了:

---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-90-343e18b2e32f> in <module>()
----> 1 f = MyTextIOFile("file.csv")

AttributeError: 'str' object has no attribute 'readable'

事实上,io.TextIOWrapper 的构造函数似乎希望传递一个文件对象。通过反复试验,我发现这个文件对象需要以binary 模式打开。但是我在任何地方都找不到文档,而且我不想在未记录的行为之上构建(事实上,在尝试将我的对象传递给 csv.reader 时,尝试继续它已经导致我遇到问题)。在 Python 3 中子类化文件对象的正确且受支持的方法是什么?

我正在使用 Python 3.5.0。

最佳答案

我认为您正在寻找的文档是

class io.TextIOWrapper(buffer, encoding=None, errors=None, newline=None, line_buffering=False)
A buffered text stream over a BufferedIOBase binary stream. [...]

第一个参数是一个二进制流,表示通过open以二进制模式打开的东西。

关于python - 通过子类化 `io.TextIOWrapper` 来子类化文件——但是它的构造函数有什么签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com