[Tutor] question !
Brian van den Broek
broek at cc.umanitoba.ca
Tue Dec 20 22:18:46 CET 2005
Krava Magare said unto the world upon 2005-12-19 17:31:
> How can I remove and add record ( dictionary type) to a file. This is the program that I'm working on: the program should create a text file, print the contents of the text file, read the file after it's been created, add a record and print the contents of the file, remove a record(s) from the specified file, write it again, read it again, print the contens of the new file.
> Here is what I have so far:
Hi,
I see that you did follow up to comp.lang.python with code and then
found your way here. Both are better than how you started :-)
But you really might want to read
<http://www.catb.org/~esr/faqs/smart-questions.html> to understand why
you've had no replies. This list (tutor) is far less strict about the
etiquette, but the advice is still good. (Keep in mind it is a busy
time of year, too :-)
Looking at what you have:
> import cPickle, shelve
> def write_file():
> CIT101 = ["Academic Computer Skills"]
<snip>
> CIT234 = ["Decision Support Using Excel"]
> pickle_file = open("pickles1.dat","w")
>
> cPickle.dump(CIT101, pickle_file)
<snip>
> cPickle.dump(CIT234, pickle_file)
> print "A file has been created and the required specifications have been added"
> pickle_file.close
<snip>
I suspect you don't really understand what pickle does. The task you
describe is to create text files, whereas pickle and cpickle are used
to save state of Python objects. They produce just barely human
readable files. For instance:
>>> pickled = open('pick', 'w')
>>> pickle.dump("This is a string", pickled)
>>> pickle.dump(["This is a list containing a string"], pickled)
>>> pickled.close()
produces this file:
S'This is a string'
p0
.(lp0
S'This is a list containing a string'
p1
a.
where the strings are still there, but surrounded by 'gunk' that lets
the pickle modules reconstruct what was pickled.
In a more complicated case, pickled files are not at all readable. H
here is a pickle of an instance of a simple class:
ccopy_reg
_reconstructor
p0
(c__main__
A
p1
c__builtin__
object
p2
Ntp3
Rp4
(dp5
S'a'
p6
I1
sS'c'
p7
I3
sS'b'
p8
I2
sb.ccopy_reg
_reconstructor
p0
(c__main__
A
p1
c__builtin__
object
p2
Ntp3
Rp4
(dp5
S'a'
p6
I4
sS'c'
p7
I6
sS'b'
p8
I5
sb.
Definitely not the sort of thing that is useful to a human!
I think you should consider switching tactics, and examine file() and
the read, readlines, write, and writelines methods of file objects.
HTH,
Brian vdB
More information about the Tutor
mailing list