[Python-Dev] New lines, carriage returns, and Windows (original) (raw)
"Martin v. Löwis" martin at v.loewis.de
Thu Sep 27 07:24:41 CEST 2007
- Previous message: [Python-Dev] [python] Re: New lines, carriage returns, and Windows
- Next message: [Python-Dev] New lines, carriage returns, and Windows
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
My understanding is that users can write code that uses only \n and Python will write the end-of-line character(s) that are appropriate for the platform when writing to a file. That's what I meant by uses \n for everything internally.
Here you misunderstand - that's only the case when the file is opened in text mode. If the file is opened in binary mode, and you write \n, then it writes just a single byte (0xA).
But if you write \r\n to a file Python completely ignores the presence of the \r and transforms the \n into a \r\n anyway, hence the \r\r in the resulting stream. My last question is simply does anyone find writing \r\r\n when the original string contained \r\n a useful behavior - personally I don't see how it is.
That's just for consistency.
But Guido's response makes this sound like it's a problem w/ VC++ stdio implementation and not something that Python is explicitly doing.
That's correct - it's the notion of "text mode" for file IO.
Anyway, it'd might be useful to have a text-mode file that you can write \r\n to and only get \r\n in the resulting file.
This I don't understand. Why don't you just use binary mode then? At least for Python 2.x, the only difference between text and binary mode is the treatment of line endings.
For Python 3, things will be different as the distinction goes further; the precise API for line endings is still being considered there.
Regards, Martin
- Previous message: [Python-Dev] [python] Re: New lines, carriage returns, and Windows
- Next message: [Python-Dev] New lines, carriage returns, and Windows
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]