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

Reply via email to