[New-bugs-announce] [issue38710] unsynchronized write pointer in io.TextIOWrapper in 'r+' mode
Manuel Ignacio Pérez Alcolea
report at bugs.python.org
Tue Nov 5 23:04:15 EST 2019
New submission from Manuel Ignacio Pérez Alcolea <perezalcoleam at gmail.com>:
There seems to be a bug in the `io.TextIOWrapper` class while working in 'r+' mode, although I can't say the source of the problem is right there.
The write pointer doesn't match `file.tell()` after performing a read operation.
For example, this file, consisting of 3 lines:
line one
line two
line three
Doesn't result in the expected modification running the following program:
with open('file', 'r+', buffering=1) as f:
print(f.tell()) # => 0
print(f.readline().strip()) # we read 1 line
print(f.tell()) # => 9
print('Hello', file=f) # we write "Hello\n"
print(f.tell()) # => 34
Instad of
line one
Hello
wo
line three
It results in
line one
line two
line threeHello
But it works just fine if `f.seek(f.tell())` is added the program, right before the write operation.
There are several possible explanations on StackOverflow, involving the buffering for IO in text files:
https://stackoverflow.com/a/58722058/11601118
----------
components: IO
messages: 356089
nosy: Manuel Ignacio Pérez Alcolea
priority: normal
severity: normal
status: open
title: unsynchronized write pointer in io.TextIOWrapper in 'r+' mode
type: behavior
versions: Python 3.7
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue38710>
_______________________________________
More information about the New-bugs-announce
mailing list