How to write a simple shell loop in python?

Steve Holden steve at holdenweb.com
Wed Jan 21 08:37:25 EST 2009


Dietrich Bollmann wrote:
> Hi,
> 
> I am trying to write a simple shell loop in Python.
> 
> My simple approach works fine - but the first output line after entering
> something is always indented by one blank.  
> 
> Is there any logic explanation for this?  
> How can I get rid of the blank?
> Is there a smarter way to write a simple shell loop which would work
> better?
> 
> Thanks, Dietrich
> 
> 
> Here my approach:
> 
> $ python
> Python 2.5.2 (r252:60911, Jan  4 2009, 17:40:26) 
> [GCC 4.3.2] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys    
>>>> while (1):
> ...     print "$ ",
> ...     input = sys.stdin.readline()
Just replace the lines above with

input = raw_input("$ ")

and you'll be fine. The "," in the print statement causes the
interpreter to set a flag to emit a space before the next output unless
it has just printed a newline. The "newline", of course, is provided by
the input, so the next print emits a space since it *hasn't* just
emitted a newline.

regards
 Steve

> ...     input = input.strip()
> ...     print input
> ...     print input
> ...     print input
> ... 
> $ one
>  one
> one
> one
> $ two
>  two
> two
> two
> $ three
>  three
> three
> three
> $ 
> Traceback (most recent call last):
>   File "<stdin>", line 3, in <module>
> KeyboardInterrupt
> 
> 
> --
> http://mail.python.org/mailman/listinfo/python-list
> 


-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC              http://www.holdenweb.com/




More information about the Python-list mailing list