Việc sử dụng tệp yaml trong python là gì?

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 nay
  • config.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

Hình 1 - Đọc file cấu hình YAML trong Python [ảnh của tác giả]

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

Hình 2 - Ghi vào tệp cấu hình YAML bằng Python [hình ảnh của tác giả]

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
0

Hình 3 - Tệp JSON đã lưu [hình ảnh của tác giả]

Và đó 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 đó

Mục đích của việc sử dụng tệp YAML là gì?

YAML dùng để làm gì? . Bạn nên viết các tệp cấu hình bằng YAML thay vì JSON, mặc dù chúng có thể được sử dụng thay thế cho nhau trong hầu hết các trường hợp, vì YAML có khả năng đọc tốt hơn và thân thiện với người dùng hơn. to create configuration files. It's recommended that configuration files be written in YAML rather than JSON, even though they can be used interchangeably in most cases, because YAML has better readability and is more user-friendly.

Làm cách nào để sử dụng YAML Python?

Làm theo hướng dẫn bên dưới. .
Mở kho lưu trữ PyYAML GitHub
Nhấp vào phần mã và tải xuống tệp ZIP
Giải nén hoặc Giải nén kho lưu trữ Zip
Mở dấu nhắc lệnh hoặc thiết bị đầu cuối
Thay đổi thư mục PyYAML nơi giải nén tệp zip
Chạy một thiết lập python. lệnh cài đặt py để cài đặt PyYAML

Tại sao nên sử dụng YAML thay vì Python?

Python được đánh giá cao nhất nhờ cú pháp tao nhã và mã dễ đọc, nếu bạn mới bắt đầu sự nghiệp lập trình thì python phù hợp nhất với bạn. Mặt khác, YAML được mô tả chi tiết là " Định dạng tuần tự hóa dữ liệu có thể phân tích cú pháp máy đơn giản được thiết kế để con người có thể đọc và tương tác ".

Chúng ta có thể sử dụng YAML trong Python không?

Tuyên bố này gần như đúng, vì thư viện chuẩn và các mô-đun bên ngoài đáp ứng nhiều nhu cầu lập trình. Tuy nhiên, Python thiếu hỗ trợ tích hợp cho định dạng dữ liệu YAML , thường được sử dụng để định cấu hình và tuần tự hóa, mặc dù có sự tương đồng rõ ràng giữa hai ngôn ngữ.

Chủ Đề