Smith, Jeff wrote: > At least with Python there's only one obvious way to do something :-)
Yeah, right. A couple of minutes reading comp.lang.python will disabuse you of that notion :-) > > 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()) If you are willing to depend on the runtime to close the file that is fine. If you want to close it yourself you have to keep a reference to the open file. For short Python scripts I usually allow the runtime to close the file. For longer programs and anything written in Jython (which has different garbage collection behaviour) I usually use an explicit close(). Kent > > 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