YAML [YAML Ain't Markup Language] là ngôn ngữ tuần tự hóa dữ liệu mà con người có thể đọc được. Nó thường được sử dụng cho các tệp cấu hình, nhưng nó cũng được sử dụng trong lưu trữ dữ liệu [e. g. đầu ra gỡ lỗi] hoặc truyền [e. g. tiêu đề tài liệu]
YAML vốn hỗ trợ ba loại dữ liệu cơ bản. vô hướng [chẳng hạn như chuỗi, số nguyên và số float], danh sách và mảng kết hợp
Phần mở rộng tên tệp được đề xuất chính thức cho các tệp YAML là
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 65. Có hai mô-đun trong Python cho YAML. PyYAML và ruamel. khoai mỡ. Trong hướng dẫn này, chúng tôi sử dụng cái cũ
PyYAML
PyYAML là trình phân tích cú pháp và trình phát YAML cho Python
$ pip install pyyaml
Mô-đun được cài đặt với pip
Trong hướng dẫn này, chúng tôi sử dụng các tệp YAML sau
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 6
Chúng tôi có một vài giá trị vô hướng
cities: - Bratislava - Kosice - Trnava - Moldava - Trencin --- companies: - Eset - Slovnaft - Duslo Sala - Matador Puchov
Chúng tôi có hai tài liệu trong
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 66. Các tài liệu được phân tách bằng
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 67
Python YAML đọc
Trong ví dụ đầu tiên, chúng tôi đọc tệp YAML
#!/usr/bin/python import yaml with open['items.yaml'] as f: data = yaml.load[f, Loader=yaml.FullLoader] print[data]
Chúng tôi mở tệp
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 68 và tải nội dung bằng phương pháp
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 69. Dữ liệu được in ra bàn điều khiển
$ python read_yaml.py {'raincoat': 1, 'coins': 5, 'books': 23, 'spectacles': 2, 'chairs': 12, 'pens': 6}
Mô-đun PyYAML chuyển đổi các giá trị vô hướng thành từ điển Python
Nhiều tài liệu YAML được đọc với
cities: - Bratislava - Kosice - Trnava - Moldava - Trencin --- companies: - Eset - Slovnaft - Duslo Sala - Matador Puchov0
#!/usr/bin/python import yaml with open['data.yaml'] as f: docs = yaml.load_all[f, Loader=yaml.FullLoader] for doc in docs: for k, v in doc.items[]: print[k, "->", v]
Ví dụ đọc cả hai tài liệu từ tệp
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 66
$ python read_docs.py cities -> ['Bratislava', 'Kosice', 'Trnava', 'Moldava', 'Trencin'] companies -> ['Eset', 'Slovnaft', 'Duslo Sala', 'Matador Puchov']
Kết xuất YAML của Python
Phương thức
cities: - Bratislava - Kosice - Trnava - Moldava - Trencin --- companies: - Eset - Slovnaft - Duslo Sala - Matador Puchov2 tuần tự hóa một đối tượng Python thành luồng YAML
#!/usr/bin/python import yaml users = [{'name': 'John Doe', 'occupation': 'gardener'}, {'name': 'Lucy Black', 'occupation': 'teacher'}] print[yaml.dump[users]]
Trong ví dụ, chúng tôi có một danh sách các từ điển. Chúng tôi tuần tự hóa danh sách thành định dạng YAML bằng phương thức
cities: - Bratislava - Kosice - Trnava - Moldava - Trencin --- companies: - Eset - Slovnaft - Duslo Sala - Matador Puchov2
$ python dumping.py - name: John Doe occupation: gardener - name: Lucy Black occupation: teacher
Ví dụ sau ghi dữ liệu Python vào tệp YAML
#!/usr/bin/python import yaml users = [{'name': 'John Doe', 'occupation': 'gardener'}, {'name': 'Lucy Black', 'occupation': 'teacher'}] with open['users.yaml', 'w'] as f: data = yaml.dump[users, f]
Ví dụ ghi danh sách từ điển vào tệp
cities: - Bratislava - Kosice - Trnava - Moldava - Trencin --- companies: - Eset - Slovnaft - Duslo Sala - Matador Puchov4
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 60
Chúng tôi ghi dữ liệu bằng phương pháp
cities: - Bratislava - Kosice - Trnava - Moldava - Trencin --- companies: - Eset - Slovnaft - Duslo Sala - Matador Puchov2. Tham số đầu tiên là dữ liệu, tham số thứ hai là đối tượng tệp
Các phím sắp xếp Python YAML
Chúng ta có thể sắp xếp các khóa với tham số
cities: - Bratislava - Kosice - Trnava - Moldava - Trencin --- companies: - Eset - Slovnaft - Duslo Sala - Matador Puchov6
cities: - Bratislava - Kosice - Trnava - Moldava - Trencin --- companies: - Eset - Slovnaft - Duslo Sala - Matador Puchov7
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 61
Ví dụ đọc dữ liệu từ tệp
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 68 và sắp xếp dữ liệu theo các khóa trong đầu ra YAML
raincoat: 1 coins: 5 books: 23 spectacles: 2 chairs: 12 pens: 62
Chúng tôi có thể làm việc với API cấp thấp hơn khi phân tích tệp YAML. Phương pháp
cities: - Bratislava - Kosice - Trnava - Moldava - Trencin --- companies: - Eset - Slovnaft - Duslo Sala - Matador Puchov9 quét luồng YAML và tạo mã thông báo quét