Python:在流模式下使用请求库读取大文本文件

我已经在Python 3.7中使用核心io库编写了文本文件解析器,它是抽象的。这是其中一部分代码:

import io

class Parser:
    def parse(self,input: io.TextIOBase):
        for line in iter(input.readline,''):
            # do some parsing logic
            ...

当我将本地文件流传递给它时,它工作正常:

parser = Parser()
result = parser.parse(open('somefile.txt','rt',encoding='utf8'))

但是我还需要解析器来处理HTTP中的文件。文件可能足够大,所以我不想完全在内存中读取它们。我试图利用Requests Python库的流模式,但没有成功。这是我想要做的:

file_response = requests.get(download_url,params=None,allow_redirects=True,stream=True)
file_response.raw.decode_content = True
parser = Parser()
result = parser.parse(io.TextIOWrapper(io.BufferedReader(file_response.raw),encoding='utf8'))

此代码在读取第一行后产生错误ValueError: I/O operation on closed file.

有什么解决方法吗?

s20072290 回答:Python:在流模式下使用请求库读取大文本文件

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3071080.html

大家都在问