Using cPickle

mmcclaf mmcclaf at gmail.com
Fri Feb 6 09:30:57 EST 2009


Hi there,

I have to make a small database using cPickle. I'm having troubles
trying to read in the information if it's more than one line. I'm
pretty sure it's in the line "for line in stuff:" Can anyone help me
out? Basically the end result is wanting it to look something like
what is down below when list is typed in:

Last name                 First Name                Email Address
Doe                          John
john at doe.com


[code]
# @author: Ocdt Murray McClafferty 24656
# This will manage a small database using the cPickle module.
# It must maintain a list of last names, first names and email
addresses, and must let a user interact with the program

#
#!usr/bin/python
# -*- coding: utf-8 -*-

import sys
import cPickle

#
format = '%s             %s                  %s'

try:
	filename = sys.argv[1]
	input = open(filename, 'r')

except IOError:
	print 'File is not available, will create a new file now'
	lastName='Last Name'
	firstName='First Name'
	email= 'Email'
	#input.close()
	output=open (filename, 'w')
	total = format%(lastName, firstName, email)
	cPickle.dump(total,output)
	#cPickle.dump(firstName,output)
	#cPickle.dump(email,output)
	output.close()
except EOFError:
	print 'File is empty'

#datas = cPickle.load(input)

while True:
	command=sys.stdin.readline()[:-1]
	if command=='list': #lists the data in the file
		input = open(filename, 'r')
		stuff=cPickle.load(input)
		for line in stuff:
			#firstName=cPickle.load(input)
			#email=cPickle.load(input)
			#print repr (lastName).rjust(10), repr(firstName).rjust(20), repr
(email).rjust(20)
			stuff=cPickle.load(input)
			print stuff
			print line

		input.close()

	if command=='exit' or command=='quit' : #NEVER forget the exit!!!
		print 'Save changes? y for Yes, n for No'
		commandSave=sys.stdin.readline()[:-1]
		if commandSave =='y': #if the user wants to save
			output=open(filename, 'w')
			cPickle.dump(work,output)
			output.close()
			sys.exit(0)
		if commandSave =='n': #no save
			input.close()
			sys.exit(0)

	if command=='add': #adds an entity to the file
		print 'Last name?'
		lastName=sys.stdin.readline()[:-1]
		print 'First name?'
		firstName=sys.stdin.readline()[:-1]
		print 'Email address?'
		email=sys.stdin.readline()[:-1]
		work = format%(lastName, firstName, email)
		#output=open(filename, 'w')
		#data=cPickle.load(output)
		#data.append(work)
		#output.close()
		output=open(filename, 'a')
		cPickle.dump(work,output)
		output.close()

[/code]

All help would be appreciated. I am new to Python and this seems to be
quite a challenge for me.



More information about the Python-list mailing list