12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import plac
- import subprocess
- import re
- from pathlib import Path
- from datetime import datetime
- import config
- cfg = config.Config()
- imr_dir = cfg.system_dir + '\\IQD'
- catalog_dir = cfg.system_dir + '\\Catalogs'
- export_translation = {
- 'csv': 'x_ascii.flt',
- 'xls': 'x_excel.flt',
- 'sql': 'x_sql.flt',
- 'txt': 'x_text.flt',
- 'iqd': 'x_iqd.flt',
- 'ims': 'ims'
- }
- min_filesize = 2000 # 1 kB
- @plac.pos('imr_file', '', type=str)
- @plac.opt('export_format', '', type=str, choices=export_translation.keys())
- @plac.opt('export_dir', '', type=str)
- @plac.opt('catalog', '', type=str)
- def export(imr_file, export_format='csv', export_dir=None, catalog=None):
- imr_full_filename = imr_dir + '\\' + imr_file
- export_filename = Path(imr_full_filename).name[:-3] + export_format
- if export_dir is None:
- export_dir = str(Path(imr_full_filename).parent)
- export_full_filename = f'{export_dir}\\{export_filename}'
- if catalog is None:
- catalog = catalog_name(imr_file)
- if catalog[-4:] != '.cat':
- catalog = catalog + '.cat'
- catalog_full_filename = f'{catalog_dir}\\{catalog}'
- start = datetime.now().timestamp()
- cmd = f'"{cfg.cognos_dir}\\runmac32.exe" "{cfg.tools_dir}\\VBS\\impromptu.mac" "{imr_full_filename}","{catalog_full_filename}","{export_full_filename}","{export_translation[export_format]}"'
- print(f"Exportiere '{imr_file}' als '{export_format}' nach '{export_dir}'...", end='')
- p = subprocess.Popen(cmd)
- p.wait()
- if Path(export_full_filename).exists():
- export_stat = Path(export_full_filename).stat()
- if export_stat.st_mtime > start and export_stat.st_size > min_filesize:
- print('erfolgreich.')
- filesize_kb = round(export_stat.st_size / 1024)
- stop = datetime.now().timestamp()
- delta = round((stop - start))
- print(str(filesize_kb) + ' KB in ' + str(delta // 60) + ':' + str(delta % 60).zfill(2) + ' min geschrieben.')
- return
- print('fehlgeschlagen.')
- def catalog_name(imr_file):
- p = re.compile(r'catalogs\\([^\.]+)\.cat', re.IGNORECASE)
- with open(imr_dir + '\\' + imr_file, 'r', errors='ignore') as f:
- for line in f.readlines():
- m = p.search(line)
- if m:
- return p.match(m.group()).groups()[0].lower()
- if __name__ == '__main__':
- # plac.call(export)
- export('Belege\\current_date_Prognose.imr', 'ims')
|