PYTHONBREAKPOINT = 0 #disallow breakpoints import json import pdb import re import os import sys import time import glob import shutil from pprint import pprint, pformat import gzip import csv import platform import inspect from functools import partial import os.path OLDNAMES = "namedata.tsv" NEWNAMES = "names.tsv" ERRFILE = "nameerrs.txt" currProg = "names.py" # These are for error messages # for current func name, specify n = 0 or no argument. # for name of caller of current func, specify 1. # for name of caller of caller of current func, specify 2. etc. funcName = lambda n=1: sys._getframe(n + 1).f_code.co_name callerName = lambda n=2: sys._getframe(n + 1).f_code.co_name lineNo = lambda n=1: sys._getframe(n + 1).f_lineno # insert a string into another string at a specific location def insert_str(stInsert, str, index): return str[:index] + strInsert + str[index:] def at_eof(f): return f.tell() == os.fstat(f.fileno()).st_size def show_tuple(t): for item in t: print("%s, " % item, end = "") print("") # Open error file def open_error(errfile): try: flErr = open(errfile, "w", encoding = 'latin1') except OSError: print("OSError: Cannot open error File ", errfile, " for writing.", file=sys.stderr) return False except: print("Other error: Cannot open error File ", errfile, " for writing.", file=sys.stderr) return False return True # End open_error def open_file(fl, mode): try: flName = open(fl, mode, encoding='latin1') except OSError: err= "OSError: Cannot open file %s in mode %s." % (fl, mode) print_error(fl, err) return None except: err= "Other error: Cannot open file %s in mode %s." % (fl, mode) print_error(fl, err) return None return flName # end of openFile # open and read all needed fronimo-related files # print helpful error message def print_error(currFile, errMsg): print("In %s; caller:%s; line:%d of %s\nfile:'%s'; %s." % (funcName(), callerName(), lineNo(), currProg, currFile, errMsg), file=flErr) flErr.flush() def convert_record(line): #Placeholders dates = 'dates' residences = 'residences' arRec = line.split('\t') length = len(arRec) if length < 3: print(f"{line}: record too short\n") return line firstlast = arRec[0] lastfirst = arRec[1] birthplace = arRec[2] newline = firstlast + '\t' + lastfirst + '\t' + dates + '\t' + birthplace + '\t' + residences + '\t' #Pick up any alternate names i = 3 while i < length: newline = newline + '|' + arRec[i] i += 1 return(newline + '\n') #end convert_record def main(): open_error(ERRFILE) flOldNames = open_file(OLDNAMES, "r") if not flOldNames: print(f"Cannot open {OLDNAMES} file for reading.") return False flNewNames = open_file(NEWNAMES, "w") if not flNewNames: print(f"Cannot open {NEWNAMES} file for writing.") return False stOldNames = flOldNames.read() lsIn = stOldNames.split('\n') for line in lsIn: if line == '': continue newLine = convert_record(line) flNewNames.write(newLine) flNewNames.close() # end main if __name__ == "__main__": main()