Tìm kiếm và thay thế các giá trị trong hàng trăm tệp Python thậm chí còn thú vị hơn bạn nghĩ. Việc có một tệp cấu hình trung tâm duy nhất giúp việc điều chỉnh URL API, kết nối cơ sở dữ liệu và các tệp khác dễ dàng hơn rất nhiều. Hôm nay, bạn sẽ tìm hiểu cách làm cho các ứng dụng Python của mình mạnh mẽ hơn nhiều với các tệp cấu hình YAML
Vậy, YAML là gì? . Đó là ngôn ngữ tuần tự hóa dữ liệu thường được sử dụng khi ghi tệp cấu hình. Nó phổ biến trong nhiều ngôn ngữ lập trình vì nó siêu dễ đọc. Các định dạng tệp khác, chẳng hạn như JSON, cũng có thể đọc được bằng con người, nhưng chúng không thể phù hợp với sự đơn giản mà YAML cung cấp
Hôm nay bạn sẽ học cách đọc và viết các tệp YAML bằng Python và hơn thế nữa. Nhưng trước tiên, hãy cài đặt thứ
Cách cài đặt thư viện YAML Python
YAML không giao hàng với Python, vì vậy chúng tôi sẽ phải cài đặt nó. Lệnh cài đặt khác nhau, tùy thuộc vào việc bạn đang sử dụng Pip hay Anaconda. Đây là một lệnh cài đặt cho cả hai
Pip
pip install PyYAML
Trăn Anaconda
conda install -c conda-forge -y pyyaml
Và đó là tất cả những gì chúng ta cần để bắt đầu làm việc với các tệp YAML trong Python
Cách đọc tệp cấu hình YAML trong Python
Tôi đã tạo một thư mục mới với hai tệp
app.py
- Chứa mã Python cho ngày hôm nayconfig.yaml
- Chứa dữ liệu cấu hình mà chúng tôi không muốn mã hóa cứng trong tập lệnh Python
Đối với nội dung của tệp YAML, hãy coi chúng là cặp khóa-giá trị. Hôm nay chúng ta sẽ giao tiếp với API REST từ xa, vì vậy tệp cấu hình sẽ chứa điểm cuối API và đường dẫn cục bộ nơi dữ liệu sẽ được lưu
api_url: //gorest.co.in/public/v2/users
save_dir: /Users/dradecic/Desktop/users_data
save_file: users.json
Tệp cấu hình dễ đọc hơn nhiều so với JSON vì chúng tôi đã loại bỏ tất cả các dấu ngoặc nhọn và thụt lề
Nhưng làm thế nào bạn có thể đọc tệp này bằng Python? . Phương thức yaml.load[]
sẽ phân tích nội dung của tệp và lưu trữ chúng dưới dạng đối tượng từ điển Python
import yaml
with open["config.yaml", "r"] as f:
config = yaml.load[f, Loader=yaml.FullLoader]
print[config]
Bạn có thể chạy đoạn mã trên từ trình bao - đây là những gì bạn sẽ thấy
Cấu hình được lưu trữ dưới dạng các cặp khóa-giá trị, nghĩa là việc truy cập các giá trị sẽ cực kỳ dễ dàng. Trước khi làm như vậy, chúng ta cũng hãy khám phá cách ghi vào tệp YAML từ Python
Cách lưu tệp cấu hình YAML trong Python
Bao quanh dữ liệu cấu hình trong ba dấu ngoặc kép nếu bạn muốn lưu tệp cấu hình YAML từ Python. Mã bên dưới chỉ cho bạn cách lưu trữ hai cặp khóa-giá trị thông thường và một khóa khác có danh sách làm giá trị
import yaml
yml_config = """key: value
another_key: another value
list_of_keys:
- value 1
- value 2
- value 3
"""
with open["configw.yaml", "w"] as f:
f.write[yml_config]
Tệp YAML tương ứng trông như thế này
Từ đây, đọc nó như được mô tả trong phần trước
Cách sử dụng tệp cấu hình YAML trong ứng dụng Python
Bây giờ chúng ta sẽ tạo một tập lệnh Python nhỏ kết nối với API REST từ xa và tải xuống dữ liệu ở định dạng JSON. Chúng tôi đã có URL và đường dẫn trong tệp config.yaml
- chỉ cần đảm bảo cập nhật đường dẫn để phù hợp với hệ điều hành của bạn
Đoạn mã bên dưới tạo một yêu cầu GET tới điểm cuối API và lưu phản hồi cục bộ. Nó cũng tạo cấu trúc thư mục nếu nó không tồn tại
import json
import yaml
import pathlib
import requests
with open["config.yaml", "r"] as f:
config = yaml.load[f, Loader=yaml.FullLoader]
def get_users[] -> dict:
r = requests.get[config["api_url"]]
return r.text
def save_users[users: dict] -> None:
path = pathlib.Path[config["save_dir"]]
if not path.exists[]:
path.mkdir[]
with open[f"{config['save_dir']}/{config['save_file']}", "w"] as f:
json.dump[users, f]
if __name__ == "__main__":
users = get_users[]
save_users[users=users]
Dưới đây bạn sẽ thấy nội dung của thư mục
conda install -c conda-forge -y pyyaml
0Và đó là cách bạn có thể tích hợp các tệp cấu hình YAML vào các dự án Python của mình. Hãy làm một bản tóm tắt ngắn tiếp theo
Tổng hợp file cấu hình YAML trong Python
Giá trị mã hóa cứng không bao giờ là một ý tưởng tốt. Chắc chắn, thật dễ dàng để thay đổi một số thứ trong một tập lệnh Python, nhưng hãy tưởng tượng bạn có hàng trăm thứ trong số đó - nó có thể dễ dàng trở thành cơn ác mộng và bạn gần như chắc chắn sẽ bỏ lỡ một vài chỗ
Hôm nay bạn đã học cách làm việc với các tệp cấu hình YAML trong Python. Toàn bộ thiết lập dễ dàng như chúng đến, nhưng đó không phải là giải pháp toàn diện. Ví dụ: bạn không thể sử dụng logic lập trình trong tệp YAML. Cách giải quyết duy nhất là bao gồm logic trong các tập lệnh Python tạo tệp YAML, nhưng điều đó không thuận tiện
Thiếu sót này có thể dễ dàng giải quyết bằng cách sử dụng các tệp Python để cấu hình. Hãy theo dõi nếu bạn muốn tìm hiểu thêm về điều đó