[Python-Dev] New lines, carriage returns, and Windows (original) (raw)
Nick Maclaren nmm1 at cus.cam.ac.uk
Sun Sep 30 11:49:56 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 ]
Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
I don't see how this is different from Unix/C "\n" being an atomic newline character.
Have you used systems with the I/O models I referred to (or ones with newlines being out-of-bound data)?
If you're saying that BCPL is better because it defines standard semantics for more control characters than just "\n", that may be true, but C is doing about the best it can with "\n" as far as I can see, given all the crazy things that different OSes want to do with line endings.
I am afraid that you are wrong - see my other posting for how to do it better. Look, I have implemented both of those two models on systems that are FAR more different than most people can imagine. Both work, and neither causes confusion. The C/Unix/Python one does.
In any case, the problem which started all this isn't really an I/O problem at all, it's a mismatch between the world of Python strings which use "\n" and .NET library code expecting strings which use "\r\n".
That's an I/O problem :-)
The correct thing to do with that is to translate whenever a string crosses a boundary between Python code and .NET code. This is something that ought to be done automatically by the Python/.NET interfacing machinery, maybe by having a different type for .NET strings.
Agreed. But the REASON it causes trouble is the inconsistency in the basic C/Unix/Python text I/O model. Let's consider just \f, \r and \n, and a few questions:
Exactly what does a free-standing \f mean?
Does \n\f\n mean starting at the top of a page or one line down?
How do \r and \f interact with line-buffering? Think about
MacOS here.
I could go on, but those are enough to indicate that the problem is insoluble. The answer "Undefined but not even explicitly discouraged" is a recipe for confusion.
Regards, Nick Maclaren, University of Cambridge Computing Service, New Museums Site, Pembroke Street, Cambridge CB2 3QH, England. Email: nmm1 at cam.ac.uk Tel.: +44 1223 334761 Fax: +44 1223 334679
- 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 ]