""" Extracts all .gz files from a given directory and writes the uncompressed outputs to an 'out/' subfolder within that directory. Useful for simple, batch decompression of Gzip files via CLI. """ import gzip from pathlib import Path def unzip_gzip(file: Path, target: str): with gzip.open(file, 'rb') as r: with open(target, 'wb') as w: return w.write(r.read()) def unzip_gzfiles(dirpath: Path) -> None: """Unzips all .gz files from a given directory into an 'out/' folder.""" gzfiles = list(dirpath.glob('*.gz')) if not gzfiles: print(f'ā„¹ļø No .gz files found in "{dirpath}"') return None # Create a directory to output the files Path(f'{dirpath}/out').mkdir(exist_ok=True) for file in gzfiles: filename = file.name.removesuffix('.gz') if not file.is_file(): continue if unzip_gzip(file, f'{dirpath}/out/{filename}'): print(f'āœ… Unzipped: {file.name}') if __name__ == '__main__': try: dirpath = Path(input('šŸ“‚ Enter the directory containing .gz files: ')) if not dirpath.exists() or not dirpath.is_dir(): print(f'āŒ Directory "{dirpath}" not found or is not a folder.') exit(1) unzip_gzfiles(dirpath) except KeyboardInterrupt: print('\nšŸ‘‹ Cancelled by user') except Exception as e: print(f'šŸ’„ Error: {e}')