superpollo wrote: > hi clp > > what's the difference between: > > while True: > input_line = sys.stdin.readline() > if input_line: > sys.stdout.write(input_line.upper()) > else: > break > > and: > > > while True: > try: > sys.stdout.write(sys.stdin.next().upper()) > except StopIteration: > break
You should write the latter as for line in sys.stdin: sys.stdout.write(line.upper()) or sys.stdout.writelines(line.upper() for line in sys.stdin) You seem to know already that next() and readline() use different ways to signal "I'm done with the file". Also, after the first StopIteration subsequent next() calls are guaranteed to raise a StopIteration. But the main difference is that file.next() uses an internal buffer, file.readline() doesn't. That means you would lose data if you tried to replace the readline() call below with next() first_line = f.readline() read_of_the_file = f.read() In newer Python versions you will get a ValueError when mixing next() and read()/readline() but in older Pythons (before 2.5 I think) you are in for a surprise. As for line in file: ... is both the fastest and most readable approach if you want to access a file one line at a time I recommend that you use it unless there is a specific reason not to. Peter -- http://mail.python.org/mailman/listinfo/python-list