Hướng dẫn python read properties file - python đọc tập tin thuộc tính

Chúng ta có thể sử dụng mô -đun

# Database Credentials
DB_HOST=localhost
DB_SCHEMA=Test
DB_User=root
DB_PWD=root@neon
4 để đọc tệp thuộc tính trong Python. Một tệp thuộc tính chứa các cặp giá trị khóa trong mỗi dòng. Các bằng (=) hoạt động như dấu phân cách giữa khóa và giá trị. Một dòng bắt đầu với # được coi là một bình luận.

Cài đặt thư viện jproperies

Mô -đun này không phải là một phần của cài đặt tiêu chuẩn. Chúng tôi có thể cài đặt mô -đun jproperies bằng PIP.

# pip install jproperties

Đọc tệp thuộc tính trong Python

Tôi đã tạo một tệp thuộc tính cho ví dụ của chúng tôi: app-config.properies.app-config.properties.

# Database Credentials
DB_HOST=localhost
DB_SCHEMA=Test
DB_User=root
DB_PWD=root@neon

Bước đầu tiên là nhập đối tượng thuộc tính vào chương trình Python của chúng tôi và khởi tạo nó.

from jproperties import Properties

configs = Properties()

Bước tiếp theo là tải tệp thuộc tính vào đối tượng thuộc tính của chúng tôi.

with open('app-config.properties', 'rb') as config_file:
    configs.load(config_file)

Đọc được đề xuất: Python với tuyên bố: Python with Statement

Bây giờ, chúng ta có thể đọc một thuộc tính cụ thể bằng phương thức

# Database Credentials
DB_HOST=localhost
DB_SCHEMA=Test
DB_User=root
DB_PWD=root@neon
5 hoặc thông qua chỉ mục. Đối tượng thuộc tính rất giống với từ điển Python.

Giá trị được lưu trữ trong một đối tượng PropertyTuple, có tên là hai giá trị - dữ liệu và meta. Các siêu dữ liệu hỗ trợ JProperties cũng vậy, nhưng chúng tôi không quan tâm đến điều đó ở đây.data and meta. The jproperties support properties metadata too, but we are not interested in that here.

print(configs.get("DB_User"))  
# PropertyTuple(data='root', meta={})

print(f'Database User: {configs.get("DB_User").data}')  
# Database User: root

print(f'Database Password: {configs["DB_PWD"].data}')  
# Database Password: root@neon

Chúng ta có thể sử dụng hàm Len () để có được số lượng thuộc tính.

print(f'Properties Count: {len(configs)}')  
# Properties Count: 4

Điều gì sẽ xảy ra nếu chìa khóa không tồn tại?

Nếu khóa không tồn tại, phương thức get () sẽ không trả về không.

random_value = configs.get("Random_Key")
print(random_value)  # None

Nhưng, nếu chúng ta sử dụng chỉ số thì

# Database Credentials
DB_HOST=localhost
DB_SCHEMA=Test
DB_User=root
DB_PWD=root@neon
6 sẽ được nâng lên. Trong trường hợp đó, nó tốt hơn để xử lý ngoại lệ này bằng cách sử dụng khối Excet.

try:
    random_value = configs["Random_Key"]
    print(random_value)
except KeyError as ke:
    print(f'{ke}, lookup key was "Random_Key"')

# Output:
# 'Key not found', lookup key was "Random_Key"

In tất cả các thuộc tính

Chúng ta có thể sử dụng phương thức Item () để có được một bộ sưu tập tuple, chứa các khóa và các giá trị PropertyTuple tương ứng.PropertyTuple values.

items_view = configs.items()
print(type(items_view))

for item in items_view:
    print(item)

Output::

<class 'collections.abc.ItemsView'>
('DB_HOST', PropertyTuple(data='localhost', meta={}))
('DB_SCHEMA', PropertyTuple(data='Test', meta={}))
('DB_User', PropertyTuple(data='root', meta={}))
('DB_PWD', PropertyTuple(data='root@neon', meta={}))

Vì chúng tôi đang tìm cách in key = giá trị làm đầu ra, chúng tôi có thể sử dụng mã sau.

# Database Credentials
DB_HOST=localhost
DB_SCHEMA=Test
DB_User=root
DB_PWD=root@neon
0

Output::

# Database Credentials
DB_HOST=localhost
DB_SCHEMA=Test
DB_User=root
DB_PWD=root@neon
1

Nhận danh sách các khóa từ tệp thuộc tính

Dưới đây là một chương trình hoàn chỉnh để đọc tệp thuộc tính và tạo danh sách tất cả các khóa.

# Database Credentials
DB_HOST=localhost
DB_SCHEMA=Test
DB_User=root
DB_PWD=root@neon
2

Python đọc tệp thuộc tính vào từ điển

Một tệp thuộc tính giống như một từ điển. Vì vậy, nó là một thực tế phổ biến để đọc tệp thuộc tính thành một từ điển. Các bước tương tự như ở trên, ngoại trừ sự thay đổi trong mã lặp để thêm các phần tử vào từ điển.

# Database Credentials
DB_HOST=localhost
DB_SCHEMA=Test
DB_User=root
DB_PWD=root@neon
3

Tham khảo: Trang Pypi Jproperies: PyPI jproperties page