Minify

Reduce the footprint of your Python code by removing all unnecessary characters. It's ideal for deploying code to low-memory devices or transmitting it over a network.

$ minipy file.py

Obfuscate

Protect your Python code from being tampered with and reverse-engineered. It's perfect for when you need to keep your Python code closed source.

$ minipy file.py --obfuscate

Try it!

Use the editor below to try Minipy in your web browser.


# This Python program downloads a file to a 'downloads' directory
# and prints its first 100 bytes.

import os
import urllib.request
import logging

# Setup logging to track the download progress.
logging.basicConfig(level=logging.INFO)

# Class to handle file downloads.
class FileDownloader:
    def __init__(self, src_url, dest_folder):
        self.src_url = src_url
        self.dest_folder = dest_folder

    def download(self):
        try:
            # Ensure destination folder exists.
            if not os.path.exists(self.dest_folder):
                os.makedirs(self.dest_folder)
                logging.info(f"Created folder: {self.dest_folder}")

            # Create a destination for the downloaded file.
            file_name = self.src_url.split("/")[-1]
            dest_path = os.path.join(self.dest_folder, file_name)

            # Download the file.
            logging.info(f"Starting download from: {file_name}")
            urllib.request.urlretrieve(self.src_url, dest_path)

            logging.info(f"Download completed: {file_name}")
        except Exception as e:
            logging.error(f"Error during download: {str(e)}")

# Simulate file processing by printing the first 100 bytes.
def process_downloaded_file(file_path):
    logging.info(f"Processing file: {file_path}")
    try:
        with open(file_path, 'rb') as file:
            raw_bytes = file.read(100)
            logging.info(f"File content preview: {raw_bytes}")
    except Exception as e:
        logging.error(f"Error processing file: {str(e)}")

def main():
    file_uri = "https://example.com/sample.txt"
    dest_folder = "downloads"

    downloader = FileDownloader(file_uri, dest_folder)
    downloader.download()

    # Assuming the file was downloaded successfully, process it.
    download_path = os.path.join(dest_folder, file_uri.split("/")[-1])
    process_downloaded_file(download_path)

if __name__ == "__main__":
    main()