Steven D'Aprano
1/22/2008 3:51:00 AM
On Tue, 22 Jan 2008 11:00:53 +0800, J. Peng wrote:
> first I know this is the correct method to read and print a file:
>
> fd = open("/etc/sysctl.conf")
> done=0
> while not done:
> line = fd.readline()
> if line == '':
> done = 1
> else:
> print line,
>
> fd.close()
The evolution of a Python program.
# Solution 2:
fd = open("/etc/sysctl.conf")
done = False
while not done:
line = fd.readline()
if line:
print line,
else:
done = True
fd.close()
# Solution 3:
fd = open("/etc/sysctl.conf")
while True:
line = fd.readline()
if line:
print line,
else:
break
fd.close()
# Solution 4:
fd = open("/etc/sysctl.conf")
lines = fd.readlines()
for line in lines:
print line,
fd.close()
# Solution 5:
fd = open("/etc/sysctl.conf", "r")
for line in fd.readlines():
print line,
fd.close()
# Solution 6:
for line in open("/etc/sysctl.conf").readlines():
print line,
# garbage collector will close the file (eventually)
# Solution 7:
fd = open("/etc/sysctl.conf", "r")
line = fd.readline()
while line:
print line,
line = fd.readline()
fd.close()
# Solution 8:
fd = open("/etc/sysctl.conf", "r")
for line in fd:
print line,
fd.close()
# Solution 9:
for line in open("/etc/sysctl.conf"):
print line,
# Solution 10:
# (the paranoid developer)
try:
fd = open("/etc/sysctl.conf", "r")
except IOError, e:
log_error(e) # defined elsewhere
print "Can't open file, please try another."
else:
try:
for line in fd:
print line,
except Exception, e:
log_error(e)
print "Reading file was interrupted by an unexpected error."
try:
fd.close()
except IOError, e:
# Can't close a file??? That's BAD news.
log_error(e)
raise e
--
Steven