ken brockman wrote:

I have been trying to post all afternoon to no avail. I keep getting
bounced back...

Ken, I don't suppose you have another email address that you sometimes use? Because if you do, that may be the problem.

If you are subscribed to this list as krush1...@yahoo.com, and you try to send to it using another email address, you will get bounced. The list software can only recognize you by your email address.



def General_info():
file4 = open("Genfacts.p", "rb")

This line above is the problem: it tries to open a file which may not exist.

Ginfo = pickle.load(file4)
file4.close()
print('General Information: ')
GinfoKey = input('CatKey: ')
GinfoFact = input('Info: ')
Ginfo[GinfoKey] = GinfoFact  # add new key:fact
file4 = open("Genfacts.p", "wb")
pickle.dump(Ginfo, file4)
file4.close()
return(Ginfo)

Try this instead:


def General_info():
    try:
        file4 = open("Genfacts.p", "rb")
        Ginfo = pickle.load(file4)
        file4.close()
    except IOError:
        # Either the file doesn't exist, or something more serious.
        # Assume the file doesn't exist.
        Ginfo = {}  # Start with an empty dict.
    print('General Information: ')
    GinfoKey = input('CatKey: ')
    GinfoFact = input('Info: ')
    Ginfo[GinfoKey] = GinfoFact  # add new key:fact
    file4 = open("Genfacts.p", "wb")
    pickle.dump(Ginfo, file4)
    file4.close()
    return Ginfo


Note: Python experts will probably point out a whole bunch of things I did wrong in the above. That's deliberate: I didn't want to overload you with too many changes all at once.

By the way, the shelve module is specifically designed to solve the problem you are trying to solve here: how to store key:value pairs on disk. Here's a version using shelve:

import shelve

def get_facts():
    facts = shelve.open('facts.db', writeback=True)
    print('Please enter a fact: ')
    key = input('CatKey: ')
    value = input('Info: ')
    facts[key] = value
    # Make a copy for later use.
    d = {}
    d.update(facts)  # Copy from facts --> d
    facts.close()
    return d


Good luck!



--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to