✅ Beginner-friendly | 🔥 Hands-on Guide | 🧩 File Structure Examples
When you start working on Python projects—whether for AWS Lambda, building an API, or creating a CLI tool—it’s important to organize your code in a clean and simple way.
A well-structured project is easy to maintain, scale, and share with others.
In this post, I will show common file and folder structures I personally use in my projects. These structures are helpful for newcomers, junior devs, or even freelancers who want to start clean from the beginning.
🐍 1. Python Project for AWS Lambda (Multiple Files)
When working with AWS Lambda, you often split your code into reusable files. This makes your handler clean and easier to manage.
📁 Folder Structure:
your-lambda-project/ ├── src/ │ ├── lambda_function.py # Main Lambda handler │ ├── config.py # Environment or API config │ ├── logger.py # Custom logger setup │ ├── utils.py # Helper functions │ ├── services.py # AWS or API calls │ ├── validator.py # Input validations │ ├── exceptions.py # Custom error handling │ ├── constants.py # Static values │ └── integration.py # API/database integration logic ├── requirements.txt # Dependencies ├── serverless.yml # Serverless Framework (optional) ├── Dockerfile # If you deploy using containers ├── README.md └── CHANGELOG.md
🐍 2. Python Project for API (Flask or FastAPI)
Building RESTful APIs with Flask or FastAPI? You can group files like this for better readability and code separation.
📁 Folder Structure:
your-api-project/ ├── src/ │ ├── main.py # Entry point to run the app │ ├── routes.py # API routes/endpoints │ ├── controllers.py # Logic for each route │ ├── services.py # Handle DB/API calls │ ├── models.py # Pydantic or DB models │ ├── config.py │ ├── logger.py │ ├── utils.py │ ├── exceptions.py │ └── constants.py ├── requirements.txt ├── .env # Environment variables ├── Dockerfile # Container support (optional) ├── README.md └── CHANGELOG.md
🐍 3. Python CLI Tool Project
Python is also great for building command-line tools. You can use argparse
or click
to handle user inputs.
📁 Folder Structure:
your-cli-tool/ ├── src/ │ ├── main.py # CLI entry script │ ├── cli.py # Argument parsing or click commands │ ├── commands.py # CLI command logic │ ├── utils.py │ ├── logger.py │ ├── config.py │ ├── constants.py │ └── exceptions.py ├── setup.py # For making your CLI installable ├── requirements.txt ├── Dockerfile # Optional for packaging ├── README.md └── CHANGELOG.md
🛠️ Tips for Beginners
- ✅ Use
src/
folder to keep your Python code separate. - ✅ Keep your
requirements.txt
updated. - ✅ Always add
README.md
to explain how your code works. - ✅ Group similar logic into their own files (e.g., services, utils).
- ✅ Add
Dockerfile
only if needed (for deployment or testing). - ✅ If you use Serverless Framework, include
serverless.yml
.
✨ Final Thoughts
Whether you are a beginner, a junior dev, or a self-learner like me—starting with the right folder structure helps you write better code, collaborate easier, and debug faster.