-
Notifications
You must be signed in to change notification settings - Fork 0
/
psql.py
executable file
·39 lines (33 loc) · 1.28 KB
/
psql.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python
import zipfile
from lxml import etree
import optparse
import os
import pprint
import sys
import dwca
parser = optparse.OptionParser()
parser.add_option("-f", "--file", help="DWC-a file to read")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose", default=True,
help="don't print status messages to stdout")
(options, args) = parser.parse_args()
if options.file == None:
parser.print_help()
sys.exit(1)
else:
dwcaobj = dwca.Dwca(options.file)
specimens = {}
for record in dwcaobj.core:
specimens[record["id"]] = record
for dwcrf in dwcaobj.extensions:
for record in dwcrf:
if record["coreid"] in specimens:
if "!extensiondata" in specimens[record["coreid"]]:
if dwcrf.rowtype in specimens[record["coreid"]]["!extensiondata"]:
specimens[record["coreid"]]["!extensiondata"][dwcrf.rowtype].append(record)
else:
specimens[record["coreid"]]["!extensiondata"][dwcrf.rowtype] = [record]
else:
specimens[record["coreid"]]["!extensiondata"] = {dwcrf.rowtype: [record]}
pprint.pprint(specimens[specimens.keys()[0]])