I thought that using a comma at the end of a print statement would suppress
printing of a newline. Am I misunderstanding this feature? How can I use
print and not have a newline appended at the end?
C:\src\projects\test1>python -c "import sys;print sys.version, 'running on',
sys.platform"
2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit (Intel)] running on
win32
C:\src\projects\test1>python -c "print 'here'," >jjj
C:\src\projects\test1>od -c jjj
0000000 h e r e \r \n
0000006
$ python -c "import sys;print sys.version, 'running on', sys.platform"
2.1 (#1, May 23 2003, 11:43:56) [C] running on aix4
$ cat eoltest.py
#!/usr/bin/env python
print 'here',
$ ./eoltest.py >jjj
$ od jjj
0000000 068 065 072 065 00a
h e r e \n
0000005 9 22137
Paul Watson wrote: I thought that using a comma at the end of a print statement would suppress printing of a newline. Am I misunderstanding this feature? How can I use print and not have a newline appended at the end?
Print doesn't want to leave the *final* line without a newline.
sys.stdout.write() doesn't care if your shell prompt gets mixed in with
the last line of output. You'll need to use the latter if that's what
you want.
exarkun@boson:~$ python -c "import sys; sys.stdout.write('here')"
hereexarkun@boson:~$
Jp
Print with no newline only works to stdout.
If you want to write to a file without
newlines use fp.write("text").
import sys
fp=open('jjj','w')
fp.write(sys.version)
fp.write('running on')
fp.write(sys.platform)
fp.close()
after running jjj contains:
2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]running onwin32
HTH,
Larry Bates
Syscon, Inc.
"Paul Watson" <pw*****@redlinepy.com> wrote in message
news:2p************@uni-berlin.de... I thought that using a comma at the end of a print statement would
suppress printing of a newline. Am I misunderstanding this feature? How can I use print and not have a newline appended at the end?
C:\src\projects\test1>python -c "import sys;print sys.version, 'running
on', sys.platform" 2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit (Intel)] running on win32
C:\src\projects\test1>python -c "print 'here'," >jjj
C:\src\projects\test1>od -c jjj 0000000 h e r e \r \n 0000006
$ python -c "import sys;print sys.version, 'running on', sys.platform" 2.1 (#1, May 23 2003, 11:43:56) [C] running on aix4
$ cat eoltest.py #!/usr/bin/env python print 'here',
$ ./eoltest.py >jjj
$ od jjj 0000000 068 065 072 065 00a h e r e \n 0000005
Paul Watson wrote: I thought that using a comma at the end of a print statement would suppress printing of a newline. Am I misunderstanding this feature? How can I use print and not have a newline appended at the end?
I thought that, too. It turns out that Python writes an additional newline
on exit if the softspace flag is set. So
$ python -c "import sys; print 'here',; sys.stdout.softspace = False" >
tmp.txt
$ od -c tmp.txt
0000000 h e r e
0000004
is a viable if ugly workaround.
Peter
"Jp Calderone" <ex*****@divmod.com> wrote in message
news:ma**************************************@pyth on.org... Paul Watson wrote: I thought that using a comma at the end of a print statement would
suppress printing of a newline. Am I misunderstanding this feature? How can I
use print and not have a newline appended at the end?
Print doesn't want to leave the *final* line without a newline. sys.stdout.write() doesn't care if your shell prompt gets mixed in with the last line of output. You'll need to use the latter if that's what you want.
exarkun@boson:~$ python -c "import sys; sys.stdout.write('here')" hereexarkun@boson:~$
Jp
Ok, I can use sys.stdout.write(). Still, this comma at the end thing does
not seem very consistent. Before the last line, while it does suppress the
newline, a space is still added to the output. Why is that? Yes, I have
seen spaces added between items in the print statement and, while it is
probably convenient at times, is frequently an annoyance.
C:\src\projects\test1>python -c "print 'here',;print 'there'," >jjj
C:\src\projects\test1>od -c -tx1 jjj
0000000 h e r e t h e r e \r \n
68 65 72 65 20 74 68 65 72 65 0d 0a
0000014
Paul Watson wrote: "Jp Calderone" <ex*****@divmod.com> wrote in message news:ma**************************************@pyth on.org...
Paul Watson wrote:
I thought that using a comma at the end of a print statement would suppress printing of a newline. Am I misunderstanding this feature? How can I use print and not have a newline appended at the end?
Print doesn't want to leave the *final* line without a newline. sys.stdout.write() doesn't care if your shell prompt gets mixed in with the last line of output. You'll need to use the latter if that's what you want.
exarkun@boson:~$ python -c "import sys; sys.stdout.write('here')" hereexarkun@boson:~$
Jp
Ok, I can use sys.stdout.write(). Still, this comma at the end thing does not seem very consistent. Before the last line, while it does suppress the newline, a space is still added to the output. Why is that? Yes, I have seen spaces added between items in the print statement and, while it is probably convenient at times, is frequently an annoyance.
Basically, print is only meant to help people new to the language get
started ;) It often does what will make life easiest for someone who is
just getting into things, but which is otherwise confusing, expected,
special-casey, or otherwise undesirable. I mean, the whole existence of
the keyword "print" is an inconsistency, right? One could quite
reasonably expect print to be a function.
Jp
You are not the only one, who feels that the behaviour of print is not
optimal. Thta's why it is on the list of things to be dropped with
Python 3. See PEP 3000 or "Python Regrets"
( http://www.python.org/doc/essays/ppt...honRegrets.pdf)
Paul Watson wrote: "Jp Calderone" <ex*****@divmod.com> wrote in message news:ma**************************************@pyth on.org...
Paul Watson wrote:
I thought that using a comma at the end of a print statement would suppress printing of a newline. Am I misunderstanding this feature? How can I use print and not have a newline appended at the end?
Print doesn't want to leave the *final* line without a newline. sys.stdout.write() doesn't care if your shell prompt gets mixed in with the last line of output. You'll need to use the latter if that's what you want.
exarkun@boson:~$ python -c "import sys; sys.stdout.write('here')" hereexarkun@boson:~$
Jp
Ok, I can use sys.stdout.write(). Still, this comma at the end thing does not seem very consistent. Before the last line, while it does suppress the newline, a space is still added to the output. Why is that? Yes, I have seen spaces added between items in the print statement and, while it is probably convenient at times, is frequently an annoyance.
C:\src\projects\test1>python -c "print 'here',;print 'there'," >jjj
C:\src\projects\test1>od -c -tx1 jjj 0000000 h e r e t h e r e \r \n 68 65 72 65 20 74 68 65 72 65 0d 0a 0000014
"Peter Otten" <__*******@web.de> wrote in message
news:ch*************@news.t-online.com... Paul Watson wrote:
I thought that using a comma at the end of a print statement would suppress printing of a newline. Am I misunderstanding this feature? How can I
use print and not have a newline appended at the end?
I thought that, too. It turns out that Python writes an additional newline on exit if the softspace flag is set. So
$ python -c "import sys; print 'here',; sys.stdout.softspace = False" > tmp.txt $ od -c tmp.txt 0000000 h e r e 0000004
is a viable if ugly workaround.
Peter
Many thanks for pointing out File.softspace attribute. However, I get mixed
results when using it. I am sure there is some logic to it somewhere. It
does not appear to control the end of line. The online doc says that it
controls putting a space -before- another value. The File.softspace.__doc__
string appears to need review also. I think I am ready to use File.write()
and move on.
C:\src\projects\test1>type eoltest.py
#!/usr/bin/env python
import sys
print 'here', 'and'
sys.stdout.softspace = False
print 'here', 'and'
sys.stdout.softspace = True
print 'here', 'and'
sys.stdout.softspace = False
print 'there',
C:\src\projects\test1>eoltest.py
here and
here and
here and
there
C:\src\projects\test1>eoltest.py >jjj
C:\src\projects\test1>od -c -tx1 jjj
0000000 h e r e a n d \r \n h e r e a
68 65 72 65 20 61 6e 64 0d 0a 68 65 72 65 20 61
0000020 n d \r \n h e r e a n d \r \n t
6e 64 0d 0a 20 68 65 72 65 20 61 6e 64 0d 0a 74
0000040 h e r e \r \n
68 65 72 65 0d 0a
0000046
C:\src\projects\test1>python -c "import sys;print
sys.stdout.softspace.__doc__"
int(x[, base]) -> integer
Convert a string or number to an integer, if possible. A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!) When converting a string, use
the optional base. It is an error to supply a base when converting a
non-string. If the argument is outside the integer range a long object
will be returned instead.
Paul Watson wrote: Many thanks for pointing out File.softspace attribute. However, I get mixed results when using it. I am sure there is some logic to it somewhere. It does not appear to control the end of line. The online doc says that it controls putting a space -before- another value. The
The softspace is normally set when a string is printed but cleared when a
newline is encountered. The print statement uses it to determine whether a
space should precede the string it is about to write. By clearing it
manually you can omit the space between two strings: import sys print "abc",;sys.stdout.softspace=0;print "def"
abcdef
When the program is terminated, the flag is (ab)used to determine whether a
line was started but not finished. Only then it controls whether a newline
is printed or not. My original idea was to register an exit handler that
does that, but it turned out that would be too late.
File.softspace.__doc__ string appears to need review also.
The softspace attribute is just an ordinary integer, i. e. you get the same
docstring you get for any int instance - the docstring of the int class:
int.__doc__ == 42 .__doc__ # note the space after 42
True
I think I am ready to use File.write() and move on.
No objections here :-)
Peter
On Fri, 03 Sep 2004 16:36:31 +0200, Peter Otten <__*******@web.de> wrote: Paul Watson wrote:
I thought that using a comma at the end of a print statement would suppress printing of a newline. Am I misunderstanding this feature? How can I use print and not have a newline appended at the end?
I thought that, too. It turns out that Python writes an additional newline on exit if the softspace flag is set. So
$ python -c "import sys; print 'here',; sys.stdout.softspace = False" > tmp.txt $ od -c tmp.txt 0000000 h e r e 0000004
is a viable if ugly workaround.
When I want printf-like control, I sometimes use (IIRC from last time ;-) import sys def printf(fmt, *args): sys.stdout.write(fmt % args)
... printf('here')
here>>> printf('here %s\n', 'doggie')
here doggie
Regards,
Bengt Richter This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Martin Bless |
last post by:
Why can't we have an additional 'print' statement, that behaves
exactly like 'print' but doesn't insert that damn blank between two
arguments?
Could be called 'printn' or 'prin1' or 'prinn'...
|
by: fowlertrainer |
last post by:
Hi !
I want to print, but without newline. I want to create a progress for
ftp, but the print is drop a newline for every percent.
I want like this:
0% 25% 50% 75% 100%
But this happening:...
|
by: Michael Foord |
last post by:
Here's a little oddity with 'print' being a reserved word...
>>> class thing:
pass
>>> something = thing()
>>> something.print = 3
SyntaxError: invalid syntax
>>> print something.__dict__...
|
by: Marcin Ciura |
last post by:
Here is a pre-PEP about print that I wrote recently.
Please let me know what is the community's opinion on it.
Cheers,
Marcin
PEP: XXX
Title: Print Without Intervening Space
Version:...
|
by: jamesthiele.usenet |
last post by:
I recently ran into the issue with 'print' were, as it says on the web
page called "Python Gotchas"
(http://www.ferg.org/projects/python_gotchas.html):
The Python Language Reference Manual says,...
|
by: bearophileHUGS |
last post by:
There is/was a long discussion about the replacement for print in
Python 3.0 (I don't know if this discussion is finished):
http://mail.python.org/pipermail/python-dev/2005-September/055968.html
...
|
by: A.M |
last post by:
Hi,
I found print much more flexible that write method. Can I use print instead
of file.write method?
Thank you,
|
by: James J. Besemer |
last post by:
I would like to champion a proposed enhancement to Python. I describe the
basic idea below, in order to gage community interest. Right now, it's only
an idea, and I'm sure there's room for...
|
by: Phoe6 |
last post by:
print and softspace in python
In python, whenever you use >>>print statement it will append a
newline by default. If you don't want newline to be appended, you got
use a comma at the end (>>>print...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: jfyes |
last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
|
by: ArrayDB |
last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
|
by: PapaRatzi |
last post by:
Hello,
I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
|
by: Defcon1945 |
last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
|
by: Shællîpôpï 09 |
last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
|
by: af34tf |
last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
|
by: Faith0G |
last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
| |