At least with Python there's only one obvious way to do something :-) I'll see your simplification and raise (or lower) you a line.
Why not simply: for item in file('hosts.txt'): tn = telnetlib.Telnet(item.strip()) Jeff -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kent Johnson Sent: Wednesday, May 10, 2006 5:52 AM Cc: tutor@python.org Subject: Re: [Tutor] For loop question w chun wrote: > another thing is that if the host file is large, you may wish to > iterate through the file one line at a time with a list comprehension > to do the stripping for you: > > HostFile = open("hosts.txt", 'r') > for item in [x.strip() for x in HostFile]: > : Why is this better when the file is large? It still creates a list with all lines in it. > > if you are using Python 2.4+, you can come up with an even better > solution by using a generator expression that does lazier, ad hoc > evaluation: > > HostFile = open("hosts.txt", 'r') > for item in (x.strip() for x in HostFile): > : > > this one will read and strip one line from the file as you process it > while the previous solution still needs to come up with the entire > list of stripped hosts before the for-loop can begin. I would use this, it avoids reading the entire file at once and IMO is clear and straightforward: HostFile = open('hosts.txt') for item in HostFile: item = item.strip() ... or even HostFile = open('hosts.txt') for item in HostFile: tn = telnetlib.Telnet(item.strip()) ... Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor