> On 7 May 2022, at 14:40, Stefan Ram <r...@zedat.fu-berlin.de> wrote: > > Marco Sulla <marco.sulla.pyt...@gmail.com> writes: >> So there's no way to reliably read lines in reverse in text mode using >> seek and read, but the only option is readlines? > > I think, CPython is based on C. I don't know whether > Python's seek function directly calls C's fseek function, > but maybe the following parts of the C standard also are > relevant for Python? There is the posix API that and the C FILE API. I expect that the odities you about NUL chars is all about the FILE API. As far as I know its the posix API that C Python uses and it does not suffer from issues with binary files. Barry > > |Setting the file position indicator to end-of-file, as with > |fseek(file, 0, SEEK_END), has undefined behavior for a binary > |stream (because of possible trailing null characters) or for > |any stream with state-dependent encoding that does not > |assuredly end in the initial shift state. > from a footnote in a draft of a C standard > > |For a text stream, either offset shall be zero, or offset > |shall be a value returned by an earlier successful call to > |the ftell function on a stream associated with the same file > |and whence shall be SEEK_SET. > from a draft of a C standard > > |A text stream is an ordered sequence of characters composed > |into lines, each line consisting of zero or more characters > |plus a terminating new-line character. Whether the last line > |requires a terminating new-line character is implementation-defined. > from a draft of a C standard > > This might mean that reading from a text stream that is not > ending in a new-line character might have undefined behavior > (depending on the C implementation). In practice, it might > mean that some things could go wrong near the end of such > a stream. > > > -- > https://mail.python.org/mailman/listinfo/python-list > -- https://mail.python.org/mailman/listinfo/python-list