On Sat, Sep 30, 2017 at 3:54 AM, Stefan Ram <r...@zedat.fu-berlin.de> wrote: > In some languages, printing »'\n'«, the Unicode code point 10, > will have the effect of printing a line terminator, which might > mean that the output device actually receives »\r\n«. > > The line terminator ostensibly depends on the operating > system, but actually it depends on the output system. E.g., > under one operating system the console might accept another > set of line separators than an editor. (Under Windows, > »wordpad« accepts »\n«, while »notepad« requires »\r\n«.) > > What is the recommended way to terminate a line written with > Python? Is it »\n« or something else? For example, in Java, > in some cases, one should terminate the line with the value > of »java.lang.System.lineSeparator()« which might or might > not be equal to the value of »"\n"«. > > Does it possibly depend on the entity being written to, which > might be > > - the Python console, > - the IDLE console, > - the operating system console or > - a text file? >
Always use "\n". In the event that you actually need "\r\n", transform that on output. In effect, you can treat "Windows-style newlines" vs "POSIX-style newlines" as a form of text encoding, to be dealt with at boundary locations only; when you read a file, you clean up the newlines, and when you write, you *might* transform them. Notepad sucks, so don't do things just for its sake; but certain network protocols stipulate carriage return/line feed as their end-of-line. HTTP, for instance, is clearly specified as such in RFC 2616 [1] - section 19.3 recommends that "\n" be accepted for the sake of interoperability, but the official line ending is CR LF. So if you're writing to a socket, you might do a two-step process of transforming newlines and also encoding UTF-8, but inside the application, keep everything as Unicode text with "\n" between lines. ChrisA [1] https://www.ietf.org/rfc/rfc2616.txt -- https://mail.python.org/mailman/listinfo/python-list