Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #30427
| Path | csiph.com!usenet.pasdenom.info!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail |
|---|---|
| Return-Path | <ramit.prasad@jpmorgan.com> |
| X-Original-To | python-list@python.org |
| Delivered-To | python-list@mail.python.org |
| X-Spam-Status | OK 0.000 |
| X-Spam-Evidence | '*H*': 1.00; '*S*': 0.00; 'subject:: [': 0.03; '(at': 0.03; 'elements.': 0.05; 'completeness': 0.07; 'json': 0.07; 'option,': 0.07; 'subject:application': 0.07; 'subject:file': 0.07; 'python': 0.09; 'compact': 0.09; 'port,': 0.09; 'received:155': 0.09; 'referencing': 0.09; 'sqlite': 0.09; 'subject:python': 0.11; "'a',": 0.16; "'b',": 0.16; "'c'": 0.16; "(can't": 0.16; '(either': 0.16; 'appreciated!': 0.16; 'benjamin': 0.16; 'disclaimers': 0.16; 'disclaimers,': 0.16; 'expandable': 0.16; 'from:addr:jpmorgan.com': 0.16; 'identifiers': 0.16; 'instances,': 0.16; 'module?': 0.16; 'pointers,': 0.16; 'portable,': 0.16; 'received:155.180': 0.16; 'received:155.180.234': 0.16; 'received:159.53': 0.16; 'received:169.70': 0.16; 'received:bankone.net': 0.16; 'received:exchad.jpmchase.net': 0.16; 'received:jpmchase.com': 0.16; 'received:jpmchase.net': 0.16; 'received:svr.bankone.net': 0.16; 'securities,': 0.16; 'space)': 0.16; 'url:disclosures': 0.16; 'url:jpmorgan': 0.16; 'wrote:': 0.17; 'duplicate': 0.17; 'items.': 0.17; '>>>': 0.18; 'subject:] ': 0.19; 'module': 0.19; 'to:name:python-list@python.org': 0.20; 'all,': 0.21; 'struct': 0.22; 'work.': 0.23; 'received:169.254': 0.24; 'least': 0.25; 'header:In-Reply-To:1': 0.25; 'guess': 0.27; 'scale': 0.27; 'accuracy': 0.27; 'converting': 0.27; 'easiest': 0.27; 'options': 0.27; 'subject:list': 0.28; 'pickle': 0.29; 'objects': 0.29; 'received:169': 0.29; 'probably': 0.29; 'class': 0.29; 'classes': 0.30; 'header:Received:8': 0.30; 'file': 0.32; 'structure': 0.32; 'problem': 0.33; 'to:addr:python-list': 0.33; 'built-in': 0.35; 'saved': 0.35; 'something': 0.35; 'but': 0.36; 'should': 0.36; 'charset:us-ascii': 0.36; 'data': 0.37; 'comment': 0.38; 'object': 0.38; 'sure': 0.38; 'advice': 0.39; 'to:addr:python.org': 0.39; 'easily': 0.39; 'subject:-': 0.40; 'think': 0.40; 'your': 0.60; 'different': 0.63; 'information,': 0.63; 'url:email': 0.63; 'other.': 0.64; 'legal': 0.65; 'subject': 0.66; 'purchase': 0.67; 'biggest': 0.71; 'sale': 0.76; 'application?': 0.84; 'compact,': 0.84; 'received:169.254.8': 0.84 |
| X-DKIM | OpenDKIM Filter v2.1.3 sf1.jpmchase.com q8SKYuri019450 |
| DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=jpmorgan.com; s=smtpout; t=1348864496; bh=DEIEa3P5abvd0GVBkbNB2i6WfQu+KTSBU9nDiQrgz2E=; h=From:To:Subject:Date:Message-ID:References:In-Reply-To: Content-Transfer-Encoding:MIME-Version:Content-Type; b=HNERer0C+5X9p2bB5wZeDrsaERhF7H7EKtfW7r4Hg3NK/ShjRBLclkeqTJrLIYDQZ C3CQ+NlbpTCzIYRyDQi9G17rtnGffFoNZvZ0JohmEu0xhuPI8hX5VnPy9nCjh5Iguk Oi4/6LD8shbniYuvHburcU2C0oJs8VMc+wal6pfA= |
| From | "Prasad, Ramit" <ramit.prasad@jpmorgan.com> |
| To | "python-list@python.org" <python-list@python.org> |
| Subject | RE: [python-list] python application file format |
| Thread-Topic | [python-list] python application file format |
| Thread-Index | AQHNm+bBRJQ3VHoSeEO2cs3jMnGtp5egNE9w |
| Date | Fri, 28 Sep 2012 20:34:25 +0000 |
| References | <5062F9D6.2060402@abzinc.com> |
| In-Reply-To | <5062F9D6.2060402@abzinc.com> |
| Accept-Language | en-US |
| Content-Language | en-US |
| X-MS-Has-Attach | |
| X-MS-TNEF-Correlator | |
| x-originating-ip | [10.67.79.47] |
| Content-Transfer-Encoding | quoted-printable |
| MIME-Version | 1.0 |
| X-DLP-FWD | Yes |
| Content-Type | text/plain; charset="us-ascii" |
| X-BeenThere | python-list@python.org |
| X-Mailman-Version | 2.1.15 |
| Precedence | list |
| List-Id | General discussion list for the Python programming language <python-list.python.org> |
| List-Unsubscribe | <http://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe> |
| List-Archive | <http://mail.python.org/pipermail/python-list/> |
| List-Post | <mailto:python-list@python.org> |
| List-Help | <mailto:python-list-request@python.org?subject=help> |
| List-Subscribe | <http://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.1582.1348864506.27098.python-list@python.org> (permalink) |
| Lines | 32 |
| NNTP-Posting-Host | 2001:888:2000:d::a6 |
| X-Trace | 1348864506 news.xs4all.nl 6884 [2001:888:2000:d::a6]:42589 |
| X-Complaints-To | abuse@xs4all.nl |
| Xref | csiph.com comp.lang.python:30427 |
Show key headers only | View raw
Benjamin Jessup wrote: > Hello all, > > What do people recommend for a file format for a python desktop > application? Data is complex with 100s/1000s of class instances, which > reference each other. > > Write the file with struct module? (Rebuild object pointers, safe, > compact, portable, not expandable without reserved space) > > Use cPickle with a module/class whitelist? (Can't easily port, not > entirely safe, compact enough, expandable) > > Use JSON or similar? (Rebuild object pointers, portable, expandable, size?) > > Any advice is greatly appreciated! I would think your options are pickle, json or database (either sqlite or something like Postgres). I am unfamiliar with the struct module so I cannot comment on its applicability. I would guess that your data would be best saved by using a sqlite database. Your biggest problem might be how the different classes are referencing each other. If you are using identifiers then any of these options will probably work. If you are using aggregation then I know that pickle will work (at least for built-in types). JSON will keep the structure but duplicate elements. >>> a = [ 1,2,3 ] >>> b = [ 'a', 'b', 'c' ] >>> a.append( b ) >>> e = [ a,b ] >>> s = json.dumps( e ) >>> eret = json.loads( s ) >>> id(eret[0][3]), id(eret[1]) # Same result for json and simplejson (329443808, 327677272) >>> eret[0][3].append( 'o') >>> eret[0][3], eret[1] ([u'a', u'b', u'c', 'o'], [u'a', u'b', u'c']) So pickle will be your easiest option, but I am not sure how well it will scale with a large number items. Using sqlite/db should scale well but it will take you longer/more effort to create a system for converting your objects to and from the DB. This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.
Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread
RE: [python-list] python application file format "Prasad, Ramit" <ramit.prasad@jpmorgan.com> - 2012-09-28 20:34 +0000 Re: [python-list] python application file format Ramchandra Apte <maniandram01@gmail.com> - 2012-09-29 06:35 -0700 Re: [python-list] python application file format Ramchandra Apte <maniandram01@gmail.com> - 2012-09-29 06:35 -0700
csiph-web