如果我在 python 3 中运行以下代码
from io import BytesIO
import csv
from io import TextIOWrapper
def fill_into_stringio(input_io):
writer = csv.DictWriter(TextIOWrapper(input_io, encoding='utf-8'),fieldnames=['ids'])
for i in range(100):
writer.writerow({'ids': str(i)})
with BytesIO() as input_i:
fill_into_stringio(input_i)
input_i.seek(0)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
ValueError: I/O operation on closed file.
Run Code Online (Sandbox Code Playgroud)
如果我不使用 TextIOWrapper,io 流将保持打开状态。例如,如果我将函数修改为
def fill_into_stringio(input_io):
for i in range(100):
input_io.write(b'erwfewfwef')
Run Code Online (Sandbox Code Playgroud)
我不再收到任何错误,因此出于某种原因,TestIOWrapper 正在关闭我想稍后阅读的流。这是打算像这样吗,是否有一种方法可以在不自己编写 csv 编写器的情况下实现我的尝试?