Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #49244
| References | <CANjxQ6wWvT6zmn46oC=eQS0+dqtvkRpn2nKzdbmisLfm34LZPg@mail.gmail.com> <kqc71v$s7l$1@ger.gmane.org> |
|---|---|
| Date | 2013-06-25 17:22 -0700 |
| Subject | Re: Question about pickle |
| From | Phu Sam <psam1304@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.3883.1372243291.3114.python-list@python.org> (permalink) |
[Multipart message — attachments visible in raw view] - view raw
f.seek(0) really does the trick. Danke sehr, Phu On Tue, Jun 25, 2013 at 6:47 AM, Peter Otten <__peter__@web.de> wrote: > Phu Sam wrote: > > > I have a method that opens a file, lock it, pickle.load the file into a > > dictionary. > > I then modify the status of a record, then pickle.dump the dictionary > back > > to the file. > > > > The problem is that the pickle.dump never works. The file never gets > > updated. > > > > def updateStatus(self, fp, stn, status): > > f = open(fp, 'rw+') > > fcntl.flock(f.fileno(),fcntl.LOCK_EX | fcntl.LOCK_NB) > > > > tb = pickle.load(f) > > > > self.modifyDict(tb, stn, status) > > f.seek(0) > > > pickle.dump(tb, f) > > > > fcntl.flock(f.fileno(),fcntl.LOCK_UN) > > f.close() > > > > > > What could be the problem here? > > pickle.load() moves the file position to the end of the (first) pickle. > pickle.dump() writes the modified dict starting at the current position. > You > end up with two versions of the dict, but you'll only ever read the first. > > The fix is to go back to the start of the file with f.seek(). > > > What mode should I use to open the file to allow both pickle.load and > > pickle.dump? > > Assuming that the file already exists when updateStatus() is invoked for > the > first time: "r+b". > > I usually open the file twice, once for reading and then for writing, but I > guess that would interfere with locking. > > -- > http://mail.python.org/mailman/listinfo/python-list >
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: Question about pickle Phu Sam <psam1304@gmail.com> - 2013-06-25 17:22 -0700
csiph-web