#!/usr/bin/python3 # written by andrewtunsw.edu.au as a COMP(2041|9044) lecture example # For each file given as argument replace occurrences of Hermione # allowing for some misspellings with Harry and vice-versa. # Relies on Zaphod not occurring in the text. import re, sys, os for filename in sys.argv[1:]: tmp_filename = filename + ".new" if os.path.exists(tmp_filename): print(f"{sys.argv[0]}: {tmp_filename} already exists\n", file=sys.stderr) sys.exit(1) with open(filename) as f: with open(tmp_filename, "w") as g: for line in f: changed_line = re.sub(r"Herm[io]+ne", "Zaphod", line) changed_line = changed_line.replace("Harry", "Hermione") changed_line = changed_line.replace("Zaphod", "Harry") g.write(changed_line) os.rename(tmp_filename, filename)