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/ -- http://mail.python.org/mailman/listinfo/python-list