#!/usr/bin/env python3 import sys def read_content() -> None: file = None try: file = open(sys.argv[1]) content = file.read() print(f"Accessing file {sys.argv[1]}") print("---") print() print(content) except IndexError: print("Usage: ft_ancient_text.py ") except FileNotFoundError as e: print(f"Error opening the file '{sys.argv[1]}':", e) # trying to write when disk is full # also catch permission errors except OSError as e: print(e) # No permission to read or write except PermissionError as e: print(e) # file encoded in a format other than UTF-8 except UnicodeDecodeError as e: print(e) except IsADirectoryError as e: print(e) finally: if file: file.close() print("---") print(f"File '{sys.argv[1]}' closed.") def new_perservation_protocol() -> None: # give files a value so I can close them anyway original_file = None new_file = None # create a list to store modified lines data = [] try: original_file = open(sys.argv[1], 'r') print("Transform data") print("---") for line in original_file: line = line.rstrip('\n') line = line + "#" data.append(line) print(line) original_file.close() new_file_name = input("Enter a new file name (or empty): ") if not new_file_name: print("Not saving data") else: print(f"Saving data to '{new_file_name}'") new_file = open(new_file_name, 'w') for line in data: new_file.write(line) new_file.write('\n') print(f"Date saved in file '{new_file_name}'") new_file.close() except IndexError: print("No file to copy") except FileNotFoundError as e: print(f"Error opening the file '{sys.argv[1]}':", e) # trying to write when disk is full # also catch permission errors except OSError as e: print(e) # No permission to read or write except PermissionError as e: print(e) # file encoded in a format other than UTF-8 except UnicodeDecodeError as e: print(e) except IsADirectoryError as e: print(e) finally: if original_file: original_file.close() if new_file: new_file.close() def main() -> None: print("=== Cyber Archives Recovery & Preservation ===") read_content() print() new_perservation_protocol() if __name__ == "__main__": main()