gpt4 book ai didi

python - 如何创建和写入 textiowrapper 和 readlines

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:38 24 4
gpt4 key购买 nike

所以我尝试创建一个文本 io 包装器,然后我可以使用 readlines() 进行单元测试。这是我的尝试,但是当我运行它时 readlines() 什么也不返回:

output = io.BytesIO()
wrapper = io.TextIOWrapper(
output,
encoding='cp1252',
line_buffering=True,
)

wrapper.write('Text1')
wrapper.write('Text2')
wrapper.write('Text3')
wrapper.write('Text4')

for line in wrapper.readlines():
print(line)

我需要更改什么才能获得此输出:

 Text1
Text2
Text3
Text4

最佳答案

了解 TextIOWrapper classio模块文档:

A buffered text stream over a BufferedIOBase binary stream.

编辑:使用seek功能:

seek(offset[, whence])

Change the stream position to the given byte offset. offset is interpreted relative to the position indicated by whence. The default value for whence is SEEK_SET. Values for whence are:

  • SEEK_SET or 0 – start of the stream (the default); offset should be zero or positive
  • SEEK_CUR or 1 – current stream position; offset may be negative
  • SEEK_END or 2 – end of the stream; offset is usually negative

Return the new absolute position.

New in version 3.1: The SEEK_* constants.

New in version 3.3: Some operating systems could support additional values, like os.SEEK_HOLE or os.SEEK_DATA. The valid values for a file could depend on it being open in text or binary mode.

尝试以下注释代码片段:

import io, os
output = io.BytesIO()
wrapper = io.TextIOWrapper(
output,
encoding='cp1252',
# errors=None, # defalut
# newline=None, # defalut
line_buffering=True,
# write_through=False # defalut
)

wrapper.write('Text1\n')
wrapper.write('Text2\n')
wrapper.write('Text3\n')
# wrapper.flush() # If line_buffering is True, flush() is implied
## when a call to write contains a newline character.

wrapper.seek(0,0) # start of the stream
for line in wrapper.readlines():
print(line)

我原来的答案的其余部分:

<罢工>

<罢工>
print(output.getvalue())         # for gebugging purposes

print( wrapper.write('Text4\n')) # for gebugging purposes

# for line in wrapper.read():
for line in output.getvalue().decode('cp1252').split(os.linesep):
print(line)

输出:

==> D:\test\Python\q44702487.py
b'Text1\r\nText2\r\nText3\r\n'
6
Text1
Text2
Text3
Text4

==>

<罢工>

关于python - 如何创建和写入 textiowrapper 和 readlines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44702487/

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