✅ 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.
You can modify these based on your actual use case, but this guide gives you a good starting point. I hope it helps!