This directory contains a collection of executable Python scripts.

See also the Tools/scripts directory!

fact.py			Factorize numbers
from.py			Summarize mailbox
ftpstats.py		Summarize ftp daemon log file
lpwatch.py		Watch BSD line printer queues
markov.py		Markov chain simulation of words or characters
mboxconvvert.py		Convert MH or MMDF mailboxes to unix mailbox format
morse.py		Produce morse code (audible or on AIFF file)
mpzpi.py		test mpz -- print digits of pi (compare pi.py)
pi.py			Print all digits of pi -- given enough time and memory
pp.py			Emulate some Perl command line options
primes.py		Print prime numbers
script.py		Equivalent to BSD script(1) -- by Steen Lumholt
unbirthday.py		Print unbirthday count
update.py		Update a bunch of files according to a script.
