Just tested the setout thing. It works. Prolly a hack, but it works.
On Mon, 6 Dec 2004 19:05:58 +1300, Liam Clarke <[EMAIL PROTECTED]> wrote:
> [quote]
>
>
> if select == '1' or select == 'v' or select == 'V':
> if file_in_disk in os.listdir('/home/jerimed'): # change???
> fhandle = open(file_in_disk, 'r') # read mode
> cPickle.load(fhandle) # restore saved data
> fhandle.close()
> show_contacts()
> elif len(data_holder) > 0:
> show_contacts()
> else:
> is_empty()
> [/quote]
>
> if file_in_disk in os.listdir('/home/jerimed'): -
>
> if os.path.exists('/home/jerimed/file_in_disk'):
>
> Oh, and if it's in a subdir off the current dir -
>
> if os.path.exists('./home/jerimed/file_in_disk'):
>
> "./' means current
>
> or you could use -
> path = os.path.join(os.getcwd(), 'home','jerimed','filename')
>
> [quote]How do i pretty print output of dictionary container? Sort of tabular
> form or something, e.g.,
>
> 1. name1 email address1
> 2. name2 email address2[/quote]
>
> try this -
>
> index = 0
> for (key, item) in myDict.items():
> index += 1
> print "%d. %s \t %s" % (index, key, item)
>
> Although you may find that the length of key will vary, making it look messy.
>
> So, find the max length of the keys (names) first -
>
> highLength=0
> for element in myDict.keys():
> if len(element) > highLength:
> highLength = len(element)
>
> index = 0
> minimumSpaces= 5
> for (key, item) in myDict.items():
> index += 1
> spaceMult=(highLength+minimumSpaces)-len(key)
> outString=str(index)+". "+key+(spaceMult * " ") + item
> print outString
>
> What this line spaceMult=(highLength+minimumSpaces)-len(key) does -
>
> So, say you have two names -
>
> Bob
> Bobalicious
>
> obviously one tab(which Python usually counts as four spaces)
> separating will be
>
> Bob Bob's email
> Bobalicious Bobalicious' email
>
> spaceMult=(highLength+minimumSpaces)-len(key)
>
> highLength is 11, the length of Bob. The minimum separation between
> key and item is 5 spaces, so we're looking for the item to be 16 chars
> away from the start of the line.
>
> so spaceMult=(11+5)-len('bob')
> spaceMult = 13
>
> So, the function will pad 13 spaces between 'bob' and 'bob's email'
> whereas only the minimum 5 between Bobalicious and his email.
>
> Which should equal nicely laid out.
>
> Haven't tested this though...
>
> Standard disclaimer -
>
> There's probably an easier way to do it, and a more elegant way. Which
> someone will post shortly.
>
> Cheers,
>
> Liam Clarke
>
>
>
>
> On Mon, 6 Dec 2004 07:55:11 +0300 (Arab Standard Time), Eri Mendz
> <[EMAIL PROTECTED]> wrote:
> > On Sun, 5 Dec 2004, Jacob S. wrote:
> >
> > > I did something like this about three or four months ago...
> > > This is what I did. Notice the use of the built-in str() and eval()
> > > functions to write and receive data to and from Telephone.cfg...
> >
> > Thanks a lot Jacob, and to all who replied. I'll go through the code
> > definitely. I started building that address book last night and its
> > pretty crude. I hit a snag though: i was able to save the name/email
> > address pairs and write to disk. But i cant get it to load on startup. My
> > location is several dirs down my home directory. Of course the pickled
> > file is in same directory as the code. Its something like:
> >
> > if select == '1' or select == 'v' or select == 'V':
> > if file_in_disk in os.listdir('/home/jerimed'): # change???
> > fhandle = open(file_in_disk, 'r') # read mode
> > cPickle.load(fhandle) # restore saved
> > data
> > fhandle.close()
> > show_contacts()
> > elif len(data_holder) > 0:
> > show_contacts()
> > else:
> > is_empty()
> >
> > /home/jerimed should be changed and should be dynamic to match wherever
> > the python script is. Can you guyz advise? And is that first
> > if-statement right? I like to know if im doing the right thing.
> >
> > How do i pretty print output of dictionary container? Sort of tabular
> > form or something, e.g.,
> >
> > 1. name1 email address1
> > 2. name2 email address2
> >
> > Just for my learning experience :-). Thanks!
> >
> > --
> > Regards,
> > Eri Mendz
> >
> >
> >
> >
> > >
> > > from __future__ import division
> > > tel = {}
> > > try:
> > > file = open('Telephone.cfg', 'r')
> > > except:
> > > file = open('Telephone.cfg','w')
> > > file.close()
> > > file = open('Telephone.cfg','r')
> > > try:
> > > tel = eval(file.read())
> > > a = 0
> > > except:
> > > a = 1
> > > print "No entries on file."
> > > pass
> > > print """\
> > > Commands are:
> > > add
> > > get
> > > save
> > > delete
> > > quit
> > > all is a wildcard
> > > """
> > >
> > > while 1:
> > > ask = raw_input('Tell me what you wish to do. ')
> > > if ask == "quit":
> > > break
> > > ask = ask.split(" ")
> > > command = ask[0]
> > > entity = ask[1:]
> > > entity = " ".join(entity)
> > > if entity == '':
> > > entity = raw_input("Who do you want to %s? " % command)
> > > if command == 'add':
> > > person = entity
> > > if tel.has_key(person):
> > > print "That person is already in there. If you wish to edit the
> > > file, please delete the record first."
> > > else:
> > > tel[person] = raw_input("What is their phone number? ")
> > > if command == 'get':
> > > if a == 1:
> > > print "Sorry, there are no entries available."
> > > else:
> > > person = entity
> > > if person == 'all':
> > > key = tel.keys()
> > > key.sort()
> > > print
> > > for x in key:
> > > print "%s\n%s\n" % (x,tel[x])
> > > elif tel.has_key(person):
> > > print "\n%s\n%s\n" % (person,tel[person])
> > > else:
> > > print "%s is not in your records." % person
> > > if command == 'save':
> > > file=open('Telephone.cfg', 'w')
> > > file.write(str(tel))
> > > file.close()
> > > print 'Saved in Telephone.cfg'
> > > if command == 'delete':
> > > if a == 1:
> > > print "Sorry, there are no entries available."
> > > else:
> > > person = entity
> > > if person == 'all':
> > > tel={}
> > > newfile=open('Telephone.cfg', 'w')
> > > newfile.close()
> > > else:
> > > if tel.has_key(person):
> > > del tel[person]
> > > else:
> > > print "%s is not in your records." % person
> > > file.close()
> > > file = open('Telephone.cfg', 'w')
> > > file.write(str(tel))
> > > file.close()
> > >
> > >
> > > As always, feel free to modify, use, and otherwise tear apart my code and
> > > give me suggests on how to improve it.
> > > Jacob Schmidt
> > >
> > >> Dear Tutor,
> > >>
> > >> I like to know what is the proper procedure (is algorithmn the right
> > >> term?) in creating data in a program, write it to file, close the app
> > >> then retrieve the data when run again. Basically, I'm trying to simulate
> > >> a simple address book (well not really for the datas are just names for
> > >> now) and so far have created the basic menu interface. It is console
> > >> base so forget gui. I ask user input and store it in a list. There are
> > >> menus to change, delete the data, and to save the data list in file. I
> > >> use cPickle for this and have verified the file is created by checking
> > >> in my $PWD. I want to retrieve that data when program is run again. What
> > >> to add in my code? I thought not to post the code but explain it as
> > >> above.
> > >>
> > >> What i want: when program is run again, the saved data is loaded when
> > >> user
> > >> selects option 1 below. Of course the first time it is run, the list is
> > >> empty.
> > >>
> > >> def print_options():
> > >> print '''
> > >> Options:
> > >> [1] - Print content of list
> > >> [2] - Add name to list
> > >> [3] - Delete name from list
> > >> [4] - Change name in list
> > >> [5] - Save list to file
> > >> [P] - Print this menu
> > >> [Q] - Quit
> > >> '''
> > >>
> > >>
> > >>
> > >> --
> > >> Regards,
> > >> Eri Mendz
> > >> Using PC-Pine 4.61
> > >>
> > >>
> > >> --
> > >> Using PC-Pine 4.61
> > >>
> > >> _______________________________________________
> > >> Tutor maillist - [EMAIL PROTECTED]
> > >> http://mail.python.org/mailman/listinfo/tutor
> > >>
> > >>
> > >
> > > _______________________________________________
> > > Tutor maillist - [EMAIL PROTECTED]
> > > http://mail.python.org/mailman/listinfo/tutor
> > >
> > >
> >
> > _______________________________________________
> > Tutor maillist - [EMAIL PROTECTED]
> > http://mail.python.org/mailman/listinfo/tutor
> >
>
>
> --
>
>
> 'There is only one basic human right, and that is to do as you damn well
> please.
> And with it comes the only basic human duty, to take the consequences.
>
--
'There is only one basic human right, and that is to do as you damn well please.
And with it comes the only basic human duty, to take the consequences.
_______________________________________________
Tutor maillist - [EMAIL PROTECTED]
http://mail.python.org/mailman/listinfo/tutor