X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=m_librarian%2Finp.py;h=76ab97be9883c4cd240ae725acc3300acf897e98;hb=224d6b313acf206e754e8ca1678893c387074be9;hp=863523fe2cbbf0f95637656e702f6b364873a5c5;hpb=6b2af0acc721c0b211fb0952c009b23cf3252d00;p=m_librarian.git diff --git a/m_librarian/inp.py b/m_librarian/inp.py index 863523f..76ab97b 100644 --- a/m_librarian/inp.py +++ b/m_librarian/inp.py @@ -14,10 +14,10 @@ EOT = chr(4) # INP field separator def split_line(line): parts = line.strip().split(EOT) - l = len(parts) - if l < 11: + _l = len(parts) + if _l < 11: raise ValueError('Unknown INP structure: "%s"' % line) - if l == 11: # Standard structure + if _l == 11: # Standard structure parts.append(None) # Emulate lang else: # New structure parts = parts[:12] @@ -80,12 +80,23 @@ def import_inp(archive, inp): import_inp_line(archive, parts) -def import_inpx(path): +def import_inpx(path, pbar_cb=None): inpx = ZipFile(path) + if pbar_cb: + inp_count = 0 + for name in inpx.namelist(): + ext = os.path.splitext(name)[1] + if ext == '.inp': + inp_count += 1 + pbar_cb.set_max(inp_count) + inp_count = 0 for name in inpx.namelist(): archive, ext = os.path.splitext(name) if ext != '.inp': continue + if pbar_cb: + inp_count += 1 + pbar_cb.display(inp_count) inp = inpx.open(name) sqlhub.doInTransaction(import_inp, archive + '.zip', inp) inp.close() @@ -95,3 +106,5 @@ def import_inpx(path): connection.query("VACUUM %s" % table.sqlmeta.table) elif connection.dbName == 'sqlite': connection.query("VACUUM") + if pbar_cb: + pbar_cb.close()