New submission from Manuel Ignacio Pérez Alcolea <perezalcol...@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 <rep...@bugs.python.org> <https://bugs.python.org/issue38710> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com