def read_file(cls, filename, make_complex=True, property_to_vars=True, guess_unit=True, normalize=True, make_matrix=False, merge=True, verbose=False, multiple_files=True, hyper=False, encoding="cp1252", **kw): obj = cls(make_complex=make_complex, property_to_vars=property_to_vars, guess_unit=guess_unit, normalize=normalize, make_matrix=make_matrix, merge=merge, verbose=verbose, hyper=hyper, **kw) obj.filename = filename if multiple_files: if isinstance(filename, (list, tuple)): filenames = [] for f in filename: filenames.extend(glob(f)) else: filenames = glob(filename) else: filenames = [filename] filenames = [path(f) for f in filenames] objs = [] if not filenames: raise IOError("Pattern %r did not match any files" % filename) for idx, fname in enumerate(filenames): if verbose: print("\r%-80s\r" % fname.basename(), end="") with io.open(fname, encoding=encoding) as fil: res = obj.do_file(fil) if multiple_files: #res["FILEINDEX"] = DimPartial("FILEINDEX", [idx]) fname = py3.cast_unicode(fname) if "FILENAME" not in res: res["FILENAME"] = hfarray(fname) objs.append(res) if multiple_files: res = obj._merge(objs) else: res = objs if verbose: print("\r%80s\r" % "") return res
def read_file(cls, filename, make_complex=True, property_to_vars=True, guess_unit=True, normalize=True, make_matrix=False, merge=True, verbose=False, multiple_files=True, blockname=None, **kw): if multiple_files: merge = False obj = cls(make_complex=make_complex, property_to_vars=property_to_vars, guess_unit=guess_unit, normalize=normalize, make_matrix=make_matrix, merge=merge, verbose=verbose, **kw) obj.filename = filename if multiple_files: filenames = glob(filename) else: filenames = [filename] objs = {} for idx, fname in enumerate(filenames): with open(fname) as fil: res = obj.do_file(fil) for k, v in res.items(): if isinstance(v, list): for a in v: a["FILENAME"] = hfarray(fname) objs.setdefault(k, []).extend(v) else: v["FILENAME"] = hfarray(fname) objs.setdefault(k, []).append(v) if multiple_files: res = {} for k, v in objs.items(): res[k] = simple_merge_blocks(v) res[k].guess_units() else: res = objs if blockname: if blockname in res: return res[blockname] else: msg = "%r not a block in mdif file %r" % (blockname, filename) MDIFError(msg) else: return res
def read_file( cls, filename, make_complex=True, property_to_vars=True, guess_unit=True, normalize=True, make_matrix=False, merge=True, verbose=False, multiple_files=True, blockname=None, **kw ): if multiple_files: merge = False obj = cls( make_complex=make_complex, property_to_vars=property_to_vars, guess_unit=guess_unit, normalize=normalize, make_matrix=make_matrix, merge=merge, verbose=verbose, **kw ) obj.filename = filename if multiple_files: filenames = glob(filename) else: filenames = [filename] objs = {} for idx, fname in enumerate(filenames): with open(fname) as fil: res = obj.do_file(fil) for k, v in res.items(): if isinstance(v, list): for a in v: a["FILENAME"] = hfarray(fname) objs.setdefault(k, []).extend(v) else: v["FILENAME"] = hfarray(fname) objs.setdefault(k, []).append(v) if multiple_files: res = {} for k, v in objs.items(): res[k] = simple_merge_blocks(v) res[k].guess_units() else: res = objs if blockname: if blockname in res: return res[blockname] else: msg = "%r not a block in mdif file %r" % (blockname, filename) MDIFError(msg) else: return res
def test_glob_1(self): f = utils.glob(os.path.join(self.base, "*")) f = [os.path.split(x)[1] for x in f] self.assertEqual(f, ["aa", "bb5", "bb11"])