Dino Viehland wrote:
> And if this is fine for you, given that you may have the largest WinForms / 
> IronPython code base, I tend to think the replace may be reasonable.  But we 
> have had someone get surprised by this behavior.
>   

It is a slight impedance mismatch between Python and Windows - but isn't 
restricted to IronPython, so changing Python semantics doesn't seem like 
the right answer.

Alternatively a more intelligent text mode (that writes '\n' as '\r\n' 
and '\r\n' as '\r\n' on Windows) doesn't sound like *such* a bad idea - 
but you will still get caught out by this. A string read in text mode  
will read '\r\n' as '\n'. Setting this on a winforms component will 
still do the wrong thing. Better to be aware of the difference and use 
binary mode.

Michael

> -----Original Message-----
> From: Michael Foord [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, September 26, 2007 3:15 PM
> To: Dino Viehland
> Cc: python-dev@python.org
> Subject: Re: [python] Re: [Python-Dev] New lines, carriage returns, and 
> Windows
>
> Dino Viehland wrote:
>   
>> 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.
>>
>> 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.
>>
>> But Guido's response makes this sound like it's a problem w/ VC++ stdio 
>> implementation and not something that Python is explicitly doing.  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.  But if the general sentiment is 
>> s.replace('\r', '') is the way to go we can advice our users of the behavior 
>> when interoperating w/ APIs that return \r\n in strings.
>>
>>     
>
> We always do replace('\r\n','\n') but same difference...
>
> Michael
>
>   
>> -----Original Message-----
>> From: "Martin v. Löwis" [mailto:[EMAIL PROTECTED]
>> Sent: Wednesday, September 26, 2007 3:01 PM
>> To: Dino Viehland
>> Cc: python-dev@python.org
>> Subject: Re: [Python-Dev] New lines, carriage returns, and Windows
>>
>>
>>     
>>> This works great as long as you stay within an entirely Python world.
>>> Because Python uses \n for everything internally
>>>
>>>       
>> I think you misunderstand fairly significantly how this all works
>> together. Python does not use \n "for everything internally". Python
>> is well capable of representing \r separately, and does so if you
>> ask it to.
>>
>>
>>     
>>> So I'm curious: Is there a reason this behavior is useful that I'm
>>> missing?
>>>
>>>       
>> I think you are missing how it works in the first place (or else
>> you failed to communicate to me what precise behavior you find
>> puzzling).
>>
>> Regards,
>> Martin
>>
>> _______________________________________________
>> Python-Dev mailing list
>> Python-Dev@python.org
>> http://mail.python.org/mailman/listinfo/python-dev
>> Unsubscribe: 
>> http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk
>>
>>
>>     
>
>
>   

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to