This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2019年11月06日 04:04 by Manuel Ignacio Pérez Alcolea, last changed 2022年04月11日 14:59 by admin.
| Messages (2) | |||
|---|---|---|---|
| msg356089 - (view) | Author: Manuel Ignacio Pérez Alcolea (Manuel Ignacio Pérez Alcolea) | Date: 2019年11月06日 04:04 | |
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
|
|||
| msg356835 - (view) | Author: Martin Panter (martin.panter) * (Python committer) | Date: 2019年11月17日 23:20 | |
Previously Issue 12215 and a couple of other duplicates were opened about this. Writing after reading with TextIOWrapper doesn't work as people expect. The report was closed apparently because Victor thought there wasn't enough interest in it. FWIW the seek-then-write workaround will probably work for most common codecs, but would suffer the same problems discussed in Issue 26158 for codecs like UTF-7 and ISO-2022 that would need the encoder state constructed from the decoder state. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:59:22 | admin | set | github: 82891 |
| 2019年11月17日 23:20:53 | martin.panter | set | superseder: TextIOWrapper: issues with interlaced read-write messages: + msg356835 nosy: + martin.panter |
| 2019年11月07日 00:36:28 | josh.r | set | nosy:
+ josh.r |
| 2019年11月07日 00:29:02 | josh.r | set | components: + Library (Lib) |
| 2019年11月06日 04:04:15 | Manuel Ignacio Pérez Alcolea | create | |