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.

classification
Title: readline() specification is unclear
Type: Stage:
Components: Documentation Versions: Python 3.8
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: docs@python Nosy List: docs@python, martin.panter, porton
Priority: normal Keywords:

Created on 2019-01-31 18:13 by porton, last changed 2022-04-11 14:59 by admin.

Messages (2)
msg334634 - (view) Author: Victor Porton (porton) Date: 2019-01-31 18:13
In https://docs.python.org/3/library/io.html it is forgotten to say whether '\n' is appened to the return value of readline().

It is also unclear what happens if the last line not terminated by '\n' is read.

It is also unclear what is returned if a text file (say with '\r\n' terminators) is read. Is it appended to the return value '\n', '\r\n' or nothing?
msg334638 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2019-01-31 23:28
I agree that the documentation should be clearer about the first two points. Considering that the "input" function and by default the "str.splitlines" method both behave differently, I often had to re-learn this when I had less Python experience.

The expected behaviour as I understand is the line terminator is included if it was read. It is not included if the size limit or EOF was reached first. The Python 2 documentation <https://docs.python.org/2/library/stdtypes.html#file.readline> is clear about both the newline being included and EOF behaviour.

Regarding text files, if you mean the "TextIOWrapper.readline" method, I think it is reasonable to assume you get the translated line endings as specified by the constructor's "newline" argument: <https://docs.python.org/3/library/io.html#io.TextIOWrapper>. Newline='' and newline='\r\n' would keep the '\r\n' terminators, and newline=None would translate them to '\n'.
History
Date User Action Args
2022-04-11 14:59:10adminsetgithub: 80051
2019-01-31 23:28:45martin.pantersetnosy: + martin.panter
messages: + msg334638
2019-01-31 18:13:51portoncreate