ESR's fortune.pl redone in python - request for critique
Adelein and Jeremy
adeleinandjeremy at yahoo.com
Mon Mar 29 15:35:00 EST 2004
I have recently completed a mini-project with the goal of rewriting
in Python Eric Raymond's fortune.pl script
(http://www.catb.org/~esr/fortunes/fortune.pl-unconfuse-apache),
except that instead of generating a sigline for mail, it prints a
fortune to screen in the traditional manner of the Unix fortune. I
have succeeded in terms of functionality, but because I am only a
novice programmer, I would appreciate any comments, criticism,
suggestions, alternative options, etc. that more experienced
programmers would be willing to give, whether technical or stylistic
in nature. Here is my code:
#! /usr/bin/env python
## fortune
## Jeremy Conn
## Version 0.9, 20020329
## GNU GPL http://www.fsf.org/licenses/gpl.html
## Description: Generates a random fortune for display onscreen from
## a single file of quotes which the user maintains; the
## quotes can be multi-line, and are separated by lines
## containing only a percent sign (same format as
## traditional fortune files).
import random
import re
import sys
FORTUNES_FILE = ".fortune"
# What file should we use?
if len(sys.argv) > 1:
fortunes_file = sys.argv[1]
else:
fortunes_file = FORTUNES_FILE
# Let's see if we can open that file for reading
try:
fi = open(fortunes_file, 'r')
except:
sys.exit("Cannot open fortunes file %s." % fortunes_file)
# Collect the file pointers to each fortune entry in the file
fp_entry = [0]
line = fi.readline()
while line != "":
if re.match(r'^%$', line):
fp_entry.append(fi.tell())
line = fi.readline()
# Seek to a random entry
try:
fi.seek(random.choice(fp_entry))
except:
sys.exit("Cannot seek.")
# Add the entry to output message and then print it
fortune = ''
line = fi.readline()
while line != '':
if re.match(r'^%$', line):
break
fortune += line
line = fi.readline()
print fortune
# Return fp to beginning of file, close the file, and exit program
fi.seek(0,0)
fi.close()
sys.exit()
- Jeremy
adeleinandjeremy at yahoo.com
__________________________________
Do you Yahoo!?
Yahoo! Finance Tax Center - File online. File on time.
http://taxes.yahoo.com/filing.html
More information about the Python-list
mailing list