From 15115b4c52bfda0d1cca9fa1155beecbb873ec35 Mon Sep 17 00:00:00 2001 From: yctct Date: Sun, 7 Jun 2026 08:59:04 +0200 Subject: First commit, add all files --- py04/ex1/ft_archive_creation.py | 96 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100755 py04/ex1/ft_archive_creation.py (limited to 'py04/ex1') diff --git a/py04/ex1/ft_archive_creation.py b/py04/ex1/ft_archive_creation.py new file mode 100755 index 0000000..2ae1612 --- /dev/null +++ b/py04/ex1/ft_archive_creation.py @@ -0,0 +1,96 @@ +#!/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() -- cgit v1.2.3