我有一个方法(parse
)处理来自输入文件的数据,该文件可能已在二进制模式下打开。但是在某些子类中,如果文件以文本模式打开,则处理数据会更容易。所以我的问题是,如果这是一个简单的方法来包装任何文件以获得充当文本模式文件的东西。
请注意"Convert binary input stream to text mode"中的解决方案并不能真正实现它,因为它只生成迭代器(而不是类文件对象)。另请注意,首先在文本模式下打开文件不是一种选择。
如果它简化了解决方案,可以假设输入文件确实以二进制模式打开。
答案 0 :(得分:0)
buffer
中的io.TextIOWrapper
参数实际上是一个io.BufferedReader
对象(即以二进制模式打开的文件)。然而,阅读文档并不明显。
如果已知文件以二进制模式打开(io.RawIOBase
或io.BufferedIOBase
的实例),这似乎有效:
srctxt = io.TextIOWrapper(src)
如果src
已在文本模式下打开,但它无效,但可以通过检查它是否为io.TextIOBase
进行测试:
if isinstance(src, io.TextIOBase):
srctxt = src
else:
srctxt = io.TextIOWrapper(src)