Trong quá trình phát triển Python, việc lưu trữ thông tin nhạy cảm như mật khẩu, API key hay thông tin tài khoản luôn là vấn đề cần quan tâm. Thư viện python-dotenv cung cấp giải pháp lưu trữ các biến môi trường một cách an toàn và tiện lợi, thay thế cho phương pháp dùng file .ini truyền thống.
Cách sử dụng cơ bản
- Cài đặt thư viện:
pip install python-dotenv
- Tạo file
.envtại thư mục gốc của dự án:
.
├── .env
├── main.py
- Điền thông tin nhạy cảm vào file
.env:
# .env
ACCOUNT=ADMIN
PASSWORD=123456
- Trong file
.py, gọi hàmload_dotenv:
# main.py
import dotenv
dotenv.load_dotenv()
- Sau đó có thể truy xuất biến môi trường bằng
os.environhoặcos.getenv:
import os
print(os.environ['ACCOUNT'])
print(os.getenv('PASSWORD'))
# Kết quả:
# ADMIN
# 123456
Tính năng mở rộng
Tham số của load_dotenv
dotenv_path: Đường dẫn tới file.envstream: Đối tượngio.StringIOchứa nội dung file, dùng khidotenv_pathlà Noneverbose: Hiển thị cảnh báo khi file.envkhông tồn tại (mặc định False)override: Ghi đè biến môi trường hệ thống (mặc định False)encoding: Mã hóa khi đọc file
Quy tắc định dạng file
Key có thể không cần dấu nháy, hoặc dùng dấu nháy đơn. Value có thể không cần dấu nháy, hoặc dùng dấu nháy đơn/kép. Khoảng trắng xung quanh dấu = sẽ bị bỏ qua.
Biến không có giá trị
- Nếu chỉ khai báo key, giá trị mặc định là None
- Nếu key kèm dấu
=nhưng không có value, giá trị là chuỗi rỗng
Tham chiếu biến khác
Cú pháp ${TEN_BIEN} cho phép tham chiếu biến khác:
# .env
VAR1 = hello
VAR2 = world
VAR3 = ${VAR1}, ${VAR2}
Chú thích
Dấu # ở đầu dòng hoặc sau dòng code để thêm chú thích (tương tự Python).
Giá trị nhiều dòng
Có thể viết value nhiều dòng với dấu nháy đơn hoặc kép:
FOO = "first line
second line"
Tương đương với:
FOO = "first line\nsecond line"
Ký tự đặc biệt
Dùng dấu \ để escape:
- Với dấu nháy đơn:
\\,\' - Với dấu nháy kép:
\\,\',\a,\b,\f,\n,\r,\t,\v