python tutorial
Robert Kern
robert.kern at gmail.com
Thu Jun 18 14:55:07 EDT 2009
On 2009-06-18 00:57, steve wrote:
> "Robert Kern"<robert.kern at gmail.com> wrote in message
> news:mailman.1728.1245289092.8015.python-list at python.org...
>> On 2009-06-17 19:36, steve wrote:
>>>> "Carl Banks"<pavlovevidence at gmail.com> wrote in message
>>>> news:2f6271b1-5ffa-4cec-81f8->>0276ad647026 at p5g2000pre.googlegroups.com...
>>>> On Jun 15, 7:56 pm, "steve"<st... at nospam.au> wrote:
>>>>> I was just looking at the python tutorial, and I noticed these lines:
>>>>>
>>>>> http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-...
>>>>>
>>>>> "Windows makes a distinction between text and binary files;
>>>>> "the end-of-line characters in text files are automatically altered
>>>>> "slightly when data is read or written.
>>>>>
>>>>> I don't see any obvious way to at docs.python.org to get that
>>>>> corrected:
>>>>> Is
>>>>> there some standard procedure?
>>>> What's wrong with it?
>>>>
>>>>
>>>> Carl Banks
>>> 1) Windows does not make a distinction between text and binary files.
>>>
>>> 2) end-of-line characters in text files are not automatically altered by
>>> Windows.
>> The Windows implementation of the C standard makes the distinction. E.g.
>> using stdio to write out "foo\nbar\n" in a file opened in text mode will
>> result in "foo\r\nbar\r\n" in the file. Reading such a file in text mode
>> will result in "foo\nbar\n" in memory. Reading such a file in binary mode
>> will result in "foo\r\nbar\r\n". In your bug report, you point out several
>> proprietary APIs that do not make such a distinction, but that does not
>> remove the implementations of the standard APIs that do make such a
>> distinction.
>>
>> http://msdn.microsoft.com/en-us/library/yeby3zcb.aspx
>>
>> Perhaps it's a bit dodgy to blame "Windows" per se rather than its C
>> runtime, but I think it's a reasonable statement on the whole.
>>
>> --
>> Robert Kern
>>
>> "I have come to believe that the whole world is an enigma, a harmless
>> enigma
>> that is made terrible by our own mad attempt to interpret it as though it
>> had
>> an underlying truth."
>> -- Umberto Eco
>>
>
>
> Which is where I came in: I was looking for simple file IO in the tutorial.
> The tutorial tells me something false about Windows, rather than something
> true about Python.
I don't think it's false. I think it's a fair statement given the Windows
implementation of the C standard library. Such things are frequently considered
to be part of the OS. This isn't just some random API; it's the implementation
of the C standard.
> I'm looking at a statement that is clearly false (for anyone who knows
> anything about Windows file systems and Windows file io), which leaves the
> Python behaviour completely undefined (for anyone who knows nothing about
> Python).
>
> I understand that many of you don't really have any understanding of
> Windows, much less any background with Windows, and I'm here to help. That
> part was simple.
>
> The next part is where I can't help: What is the behaviour of Python?
The full technical description is where it belongs, in the reference manual
rather than a tutorial:
http://docs.python.org/library/functions.html#open
> I'm sure you don't think that tutorial is only for readers who can guess
> that they have to extrapolate from the behaviour of the Visual C library in
> order to work out what Python does.
All a tutorial level documentation needs to know is what is described: when a
file is opened in text mode, the actual bytes written to a file for a newline
may be different depending on the platform. The reason that it does not explain
the precise behavior on each and every platform is because it *is* undefined.
Python 2.x does whatever the C standard library implementation for stdio does.
It mentions Windows as a particularly common example of a difference between
text mode and binary mode.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list