[Tutor] find pickle and retrieve saved data

Quiles, Stephanie stephanie.quiles001 at albright.edu
Wed Aug 5 00:09:27 CEST 2015


I am still struggling with this one. 

Here is my code to retrieve data from emails.dat file 

def main():
    found = False

    search = input("Enter a name in the file for info: ")

    infile = open("emails.dat", "r")
    name = infile.readline()

    while name != '':
        email1, email2, phone, phone2 = (infile.readline())
        name = name.rstrip("\n")

        if name == search:
            print("name: ", name)
            print("Email1, alternate email, phone, alternate phone", email1, email2, phone, phone2)
            print()
            found = True

    name = infile.readline()
    infile.close()

    if not found:
        print("That name is not found in file.")


main()

This is the error i am getting: 

enter a name in the file for info: sarah
Traceback (most recent call last):
  File "/Users/stephaniequiles/Downloads/findemails.py", line 28, in <module>
    main()
  File "/Users/stephaniequiles/Downloads/findemails.py", line 9, in main
    name = infile.readline()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/codecs.py", line 319, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

Process finished with exit code 1


> On Aug 3, 2015, at 8:13 AM, Quiles, Stephanie <stephanie.quiles001 at albright.edu> wrote:
> 
> I'm trying to tell it to print everything under that particular name. I would have to def info, correct? But set it equal to what to make it work? 
> 
> Stephanie Quiles
> Sent from my iPhone
> 
>> On Aug 3, 2015, at 3:12 AM, Alan Gauld <alan.gauld at btinternet.com> wrote:
>> 
>>> On 03/08/15 04:04, Quiles, Stephanie wrote:
>>> 
>>> def main():
>> ...
>>>    name_search = input("Enter a name in the file for info: ")
>>> 
>>>    for name in emails:
>>>        if name[0] == name_search:
>>>            print("This is the info: ", info)
>> 
>> What is info? Is it supposed to be name? or name[1:]?
>> Its not set anywhere in your code.
>> 
>>>        return emails
>> 
>> Notice the return is outside the if block.
>> So you always return on the first element of the for loop.
>> 
>>>    else:
>>>        print("Entry not Found! Try again.")
>> 
>> -- 
>> Alan G
>> Author of the Learn to Program web site
>> http://www.alan-g.me.uk/
>> http://www.amazon.com/author/alan_gauld
>> Follow my photo-blog on Flickr at:
>> http://www.flickr.com/photos/alangauldphotos
>> 
>> 
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> To unsubscribe or change subscription options:
>> https://mail.python.org/mailman/listinfo/tutor



More information about the Tutor mailing list