Utility pro DAKOS import
This commit is contained in:
parent
2270aeea51
commit
9cbaf696ec
2 changed files with 35 additions and 12 deletions
22
seminar/dksdump/helpers.py
Normal file
22
seminar/dksdump/helpers.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
from seminar import ovvpfile
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def read_all_tables(basedir):
|
||||||
|
tables = {}
|
||||||
|
for fn in os.listdir(basedir):
|
||||||
|
if fn.endswith('.csv'):
|
||||||
|
print "Reading %s ..." % (fn, )
|
||||||
|
with open(os.path.join(basedir, fn), 'r') as f:
|
||||||
|
o = ovvpfile.parse(f, with_headers=False)
|
||||||
|
tables[fn[:-4]] = o.rows
|
||||||
|
print " %d lines, columns: %s" % (len(o.rows), ' '.join(o.columns), )
|
||||||
|
return tables
|
||||||
|
|
||||||
|
def matchrows(tab, key, val):
|
||||||
|
return [r for r in tab if r[key]==val]
|
||||||
|
|
||||||
|
def onerow(tab, key, val):
|
||||||
|
t = matchrows(tab, key, val)
|
||||||
|
assert(len(t) == 1)
|
||||||
|
return t[0]
|
|
@ -20,7 +20,7 @@ class OvvpFile(object):
|
||||||
def to_string(self):
|
def to_string(self):
|
||||||
return ''.join(self.to_lines())
|
return ''.join(self.to_lines())
|
||||||
|
|
||||||
def parse_from(self, source):
|
def parse_from(self, source, with_headers=True):
|
||||||
"Parse data from file, string or line iterator, overwriting self"
|
"Parse data from file, string or line iterator, overwriting self"
|
||||||
if isinstance(source, str) or isinstance(source, unicode):
|
if isinstance(source, str) or isinstance(source, unicode):
|
||||||
return self.parse_from(source.split('\n'))
|
return self.parse_from(source.split('\n'))
|
||||||
|
@ -29,15 +29,16 @@ class OvvpFile(object):
|
||||||
|
|
||||||
# header
|
# header
|
||||||
self.headers = {}
|
self.headers = {}
|
||||||
for r in it:
|
if with_headers:
|
||||||
if isinstance(r, str):
|
for r in it:
|
||||||
r = r.decode('utf8')
|
if isinstance(r, str):
|
||||||
assert isinstance(r, unicode)
|
r = r.decode('utf8')
|
||||||
r = r.rstrip('\n')
|
assert isinstance(r, unicode)
|
||||||
if r == u"":
|
r = r.rstrip('\n')
|
||||||
break
|
if r == u"":
|
||||||
k, v = r.split(u'\t', 1)
|
break
|
||||||
self.headers[k] = v
|
k, v = r.split(u'\t', 1)
|
||||||
|
self.headers[k] = v
|
||||||
|
|
||||||
# columns
|
# columns
|
||||||
r = it.next()
|
r = it.next()
|
||||||
|
@ -61,7 +62,7 @@ class OvvpFile(object):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def parse(source):
|
def parse(source, with_headers=True):
|
||||||
o = OvvpFile()
|
o = OvvpFile()
|
||||||
o.parse_from(source)
|
o.parse_from(source, with_headers=with_headers)
|
||||||
return o
|
return o
|
||||||
|
|
Loading…
Reference in a new issue