def refresh(self): import os rows, columns = os.popen('stty size', 'r').read().split() tabulars = self.tabulars[-(int(rows) - 3):] sys.stdout.write("\x1b[2J\x1b[H") sys.stdout.write(tabulate(tabulars, self.headers)) sys.stdout.write("\n")
def dump_tabular(*args, **kwargs): if not _disabled: # and not _tabular_disabled: wh = kwargs.pop("write_header", None) if len(_tabular) > 0: if _log_tabular_only: table_printer.print_tabular(_tabular) else: for line in tabulate(_tabular).split("\n"): log(line, *args, **kwargs) if not _tabular_disabled: tabular_dict = dict(_tabular) # Also write to the csv files # This assumes that the keys in each iteration won't change! for tabular_file_name, tabular_fd in list( _tabular_fds.items()): keys = tabular_dict.keys() if tabular_file_name in _tabular_headers: # check against existing keys: if new keys re-write Header and pad with NaNs existing_keys = _tabular_headers[tabular_file_name] if not set(existing_keys).issuperset(set(keys)): joint_keys = set(keys).union(set(existing_keys)) tabular_fd.flush() read_fd = open(tabular_file_name, "r") reader = csv.DictReader(read_fd) rows = list(reader) read_fd.close() tabular_fd.close() tabular_fd = _tabular_fds[ tabular_file_name] = open( tabular_file_name, "w") new_writer = csv.DictWriter( tabular_fd, fieldnames=list(joint_keys)) new_writer.writeheader() for row in rows: for key in joint_keys: if key not in row: row[key] = np.nan new_writer.writerows(rows) _tabular_headers[tabular_file_name] = list( joint_keys) else: _tabular_headers[tabular_file_name] = keys writer = csv.DictWriter( tabular_fd, fieldnames=_tabular_headers[tabular_file_name] ) # list( if wh or (wh is None and tabular_file_name not in _tabular_header_written): writer.writeheader() _tabular_header_written.add(tabular_file_name) _tabular_headers[tabular_file_name] = keys # add NaNs in all empty fields from the header for key in _tabular_headers[tabular_file_name]: if key not in tabular_dict: tabular_dict[key] = np.nan writer.writerow(tabular_dict) tabular_fd.flush() del _tabular[:]