import sys import os import re import json import csv def sortit(data): d=data[fieldsc['column X']] return d def one_file(root, name, filename): if (not re.search(r"\.(txt|csv|json)$", filename)): return print (filename, file=sys.stderr) fs = os.stat(filename).st_size if fs==0: print (" -> Empty file!", file=sys.stderr) return # PE file try: p = pefile.PE(filename) ... except: pass with open(filename, "r", encoding="utf-8") as f: # binary file data = f.read() print (data) # binary file + regex scan data = f.read() for m in re.finditer(r"(echo..)", data, re.IGNORECASE): s = m.start() e = m.end() t = data[s:e] print (t) # text file - line by line line = f.readline() while line != '': print(line, end='') line = f.readline() # JSON file data = json.load(f) objdata=data['objects'] for o in objdata: ... # CSV file with a Header csvreader = csv.reader(f) fields = next(csvreader) fieldsc = {} noc = 0 for f in fields: fieldsc[f] = noc noc = noc + 1 rows = [] for row in csvreader: rows.append(row) print (row) nor = csvreader.line_num rows.sort(key=sortit) #, reverse=True) f.close() try: arg1 = sys.argv[1] except IndexError: arg1 = "." if os.path.isdir(arg1): for (root, dirs, files) in os.walk(arg1, onerror=None, topdown=False, followlinks=False): for name in files: filename = os.path.join(root, name) one_file (root, name, filename) elif os.path.isfile(arg1): one_file ('.', filename, filename)