[Tutor] Using python to create and save a Ms Word file

Andrew Robert andrew.arobert at gmail.com
Fri Jul 21 17:14:55 CEST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Everyone,


I wasn't entirely satisfied with the Ms Word solution because it
requires the program run on Windows and have Office installed.

As an alternate solution, I created the program listed below to read a
file and create a RTF file format document from it.

The program is not platform dependent but it does require installation
of the PyRTF module.

I hope someone finds this useful/interesting.


#!C:\Python24\python
#
# program: rtfmaker.py
# Author:  Andrew Robert
#
# Function: Take a supplied file and dump its contents to an RTF file
#           This code is platform independant.
#
# Ver       Date       Programmer    Modification
# 1.0       07/21/06   AAR           Initial Creation
# 1.1                                added argument and source/target
file testing

import sys, time, string, stat, os
from PyRTF import *
from optparse import OptionParser

def MakeFile(lines):
	"""
	Create the RTF file
	"""

	doc     = Document()
	ss      = doc.StyleSheet
	section = Section()
	doc.Sections.append( section )

        # Append lines from source file
	for line in lines:
		section.append( line )

        return doc

def OpenFile( name ):
	return file( '%s' % name, 'w' )

def file_test(file):
        """
	Tests user supplied file to see if it exists and contains data.
	If the input file does not exist or is empty, return a warning code
	"""
	if (0 == os.path.isfile(file) or (0 == os.stat(file)[stat.ST_SIZE])):
		return 1
	else:
		return 0

def run_tests(input, output):
        """
	Test source file to ensure it exists and contains data
	"""
	if file_test(input) == 1 :
		print "\nError: Source file not found or is empty."
		parser.print_help()
		sys.exit(1)

	# Test target file to prevent accidental clobbering
	if file_test(output) == 0 :
		print "\nError: Target file already exists."
		parser.print_help()
		sys.exit(1)



def test_options(infile, outfile):
	"""
	Verify that required values are specified on commmand line
        and that specified port is within range
	"""

        if not infile :
		print "\nError: No input file specified"
		parser.print_help()
		sys.exit(1)
	
	if not outfile :
		print "\nError: No input file specified"
		parser.print_help()
		sys.exit(1)


if __name__ == '__main__' :

	parser=OptionParser()
	parser.add_option("-i", "--input" , dest="infile",
                  help="Input FILE" , metavar="FILE")
	parser.add_option("-o", "--output", dest="outfile",
                  help="Output file", metavar="FILE")
	
	(options, args) = parser.parse_args()

	test_options( options.infile , options.outfile )
	run_tests(options.infile , options.outfile)

	DR = Renderer()
	lines = open(options.infile,"r").readlines()
	rtffile = MakeFile(lines)

	# Write the new RTF file to disk
	DR.Write( rtffile, OpenFile( options.outfile ) )
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: GnuPT 2.7.2

iD8DBQFEwO9uDvn/4H0LjDwRAlHSAJ9KIzPYT2YHdK8MptBS8JSIdt8dZACgsfKi
nZQ3Bs71jsbFplmwbnVEIgI=
=ZPSo
-----END PGP SIGNATURE-----


More information about the Tutor mailing list