On 02/09/2012 21:58, gwhite wrote:
On Sep 2, 1:16 pm, Dave Angel <d...@davea.name> wrote:
On 09/02/2012 03:50 PM, gwhite wrote:
> On Sep 2, 12:43 pm, Dave Angel <d...@davea.name> wrote:
>> On 09/02/2012 03:34 PM, gwhite wrote:
>>> <snip>
>>> btw, I also thought the default "add a CR LF" to the end was odd too.
>>> But at least that one had a simple way out.
>> But it (print on Python 2.x) doesn't, unless you're stuck on Windows.
>> And even then, you can prevent it by using a 'b' in the mode.
> Yes, I'm using windows. What is "'b' in the mode?" The help for
> print says:
> A ``'\n'`` character is written at the end, unless the ``print``
> statement ends with a comma. This is the only action if the statement
> contains just the keyword ``print``.
> So I followed with a comma to stop the default CR LF insertion.
You're correct; the best way to suppress the newline at the end of
print is to use the trailing comma. But since print is for lines, it
usually is a good default. If you don't want to get any extra
characters, just use write(). It takes a string, and outputs exactly
what it's given.
I assumed you were complaining about the conversion of newline to
carriage-return-newline, which is done by default on Windows, and can be
suppressed by opening the file with "b" as the mode parameter.
Sorry, I was a little vague on the newline stuff.
In any case, I've learned I should probably avoid the comma, if
looking at 3.x:
from __future__ import print_function
print('a=%.1f,' % 1.0),;print('b=%.1f' % 2.0)
a=1.0,
(None,)
b=2.0
Explanation:
With 'print' as a function, the first 'print' prints the result of
"'a=%.1f,' % 1.0" and then returns None. The trailing comma makes that
into a tuple (None,), which is printed by the interactive interpreter
as such.
In other words:
>>> None,
(None,)
>>>
The second prints the result of "'b=%.1f' % 2.0" and then returns None.
The interactive interpreter, recognising that it's only None, doesn't
bother to print it.
In other words:
>>> None
>>>
Given the input of several posters, I feel like I should probably be
using the `write` function anyway. (I don't have a problem pre-
constructing strings either.)
But I am a newbie, and "all" the show-and-tell examples/tutorials use
`print`. But this little thread has helped me a lot.
--
http://mail.python.org/mailman/listinfo/python-list