Làm thế nào để bạn tạo một tệp thuộc tính trong python?

Trong Python, chúng ta có thể đọc tệp cấu hình và sau đó là bắt buộc khi bạn phải sử dụng các thuộc tính được ghi trong tệp thuộc tính trong chương trình của mình. Trong hướng dẫn này, chúng ta sẽ tạo một tệp thuộc tính mẫu và sau đó đọc các giá trị bên trong tệp này bằng thư viện configparser của Python. Thư viện configparser là thư viện Python được sử dụng để đọc các tệp cấu hình trong Python và bạn có thể sử dụng thư viện này để đọc các tệp cấu hình trong chương trình của mình. Ví dụ: bạn có thể lưu trữ chi tiết kết nối cơ sở dữ liệu trong tệp thuộc tính, sau đó sử dụng trình cấu hình để phân tích cú pháp và đọc thông tin xác thực kết nối cơ sở dữ liệu

Công dụng chính của tệp thuộc tính trong lập trình là lưu trữ các tham số cấu hình, có thể được chương trình sử dụng trong thời gian chạy. Ví dụ: bạn có thể xác định chuỗi kết nối cơ sở dữ liệu, máy chủ, tên người dùng và mật khẩu trong tệp thuộc tính, sau đó sử dụng các giá trị này để kết nối với cơ sở dữ liệu trong khi thực hiện chương trình. Trong tương lai nếu các tham số cơ sở dữ liệu của bạn bị thay đổi thì bạn chỉ cần cập nhật các giá trị trong tệp thuộc tính trong khi chương trình của bạn sẽ không thay đổi. Vì vậy, theo cách này, các lập trình viên đang sử dụng tệp thuộc tính trong chương trình của họ để lưu các tham số có thể định cấu hình khác nhau của ứng dụng

Thư viện configparser đi kèm với Python 3 và nó có thể được nhập trong chương trình Python bằng cách sử dụng câu lệnh nhập 'nhập configparser'. Sau khi nhập thư viện này vào chương trình của bạn, bạn có thể tạo phiên bản của thư viện trình phân tích cú pháp và sau đó sử dụng nó để phân tích cú pháp tệp thuộc tính. Sau khi đọc tệp thuộc tính, bạn có thể lấy giá trị thuộc tính của mình với sự trợ giúp của phương thức get(). Ví dụ sau cho bạn thấy cách đọc tệp thuộc tính trong Python rất dễ dàng

Tệp tài sản mẫu

Trước hết, chúng tôi sẽ tạo một tệp thuộc tính mẫu và thêm các thuộc tính. Dưới đây là ví dụ mẫu về tệp thuộc tính

# Database Configuration

[db]
db_url=jdbc:mysql://localhost:3308/mydb
user=root
password=mypass

Đây là ảnh chụp màn hình của tệp thuộc tính

Làm thế nào để bạn tạo một tệp thuộc tính trong python?

 

Cài đặt trình cấu hình

Trình cấu hình là thư viện python và trước tiên bạn nên cài đặt trong môi trường python của mình. Lệnh cài đặt thư viện configparser là

pip install configparser

Lệnh trên sẽ cài đặt thư viện configparser trong môi trường Python của bạn. Bây giờ chúng ta có thể tiến hành phát triển chương trình đọc tệp thuộc tính bằng thư viện configparser

Đọc tệp thuộc tính trong Python bằng configparser

Trước hết, bạn phải nhập thư viện configparser trong chương trình của mình và để làm điều này, bạn có thể sử dụng mã python sau


import configparser

Sau đó, chúng tôi sẽ có thể sử dụng thư viện này để tải phân tích cú pháp. tệp thuộc tính. Sau khi đọc db. chúng ta có thể sử dụng phương thức get() để lấy giá trị của thuộc tính trong chương trình Python của mình

Đây là mã hoàn chỉnh để đọc tệp thuộc tính trong Python bằng trình cấu hình


import configparser

config = configparser.ConfigParser()
config.read('db.properties')

db_url=config.get("db", "db_url")
user=config.get("db", "user")
password=config.get("db", "password")

print(db_url)
print(user)
print(password)

Đây là ảnh chụp màn hình của chương trình python trong IDE

Làm thế nào để bạn tạo một tệp thuộc tính trong python?
 

Bạn có thể chạy chương trình này bằng lệnh sau


python readprop.py

Chương trình trên sẽ đọc tệp thuộc tính và in các giá trị của thuộc tính db_url, người dùng và mật khẩu trên bàn điều khiển

jProperties là trình phân tích cú pháp và trình ghi tệp thuộc tính Java cho Python. Nó nhằm mục đích cung cấp chức năng giống như lớp Thuộc tính của Java, mặc dù hiện tại định dạng thuộc tính XML không được hỗ trợ

Trình phân tích cú pháp tệp thuộc tính hỗ trợ bao gồm siêu dữ liệu có thể đọc được và có thể thiết lập theo chương trình trong các tệp thuộc tính. Siêu dữ liệu cho một khóa được biểu diễn dưới dạng từ điển Python; . Đây là chuyển đổi một chiều;

Theo mặc định, phương thức store() không ghi ra siêu dữ liệu. Để bật tính năng đó, hãy đặt đối số từ khóa strip_meta=False khi gọi phương thức

Lưu ý rằng hỗ trợ siêu dữ liệu luôn được bật. Điều duy nhất không bắt buộc là thực sự viết ra siêu dữ liệu

Các khóa siêu dữ liệu bắt đầu bằng hai dấu gạch dưới (__) không được ghi vào luồng đầu ra bằng phương thức store(). Do đó, chúng có thể được sử dụng để đính kèm siêu dữ liệu “chỉ dành cho thời gian chạy” vào các thuộc tính. Tuy nhiên, hiện tại, siêu dữ liệu với các khóa như vậy vẫn được đọc từ luồng đầu vào bởi load();

Các nhận xét sau định nghĩa thuộc tính có thể được thêm vào siêu dữ liệu bằng khóa _doc nếu đối số tùy chọn metadoc=True được cung cấp cho phương thức tải. Điều này cho phép các thuộc tính được ghi lại trong tệp thuộc tính. Ví dụ, tệp thuộc tính

#: _severity=fatal
10001=Fatal internal error: %s
# A fatal internal error occurred.  Please re-run the command
# with the -D option to generate additional debug information.

Mã ví dụ sau đây cho thấy cách truy cập tài liệu này

from jproperties import Properties

p = Properties()
with open("foobar.properties", "rb") as f:
    p.load(f, "utf-8", metadoc=True)
# Print the explicitly defined '_severity' metadata
print("Severity: ", p.getmeta("10001")['_severity'])
# Print the implicitly defined '_doc' metadata
print("Explanation: ", p.getmeta("10001")['_doc'])

Tài liệu có thể được trích xuất từ ​​các tệp thuộc tính và được sử dụng để tạo các trang trong tài liệu hệ thống tổng thể hoặc có thể được truy cập thông qua các tùy chọn cho các tiện ích dòng lệnh

Hỗ trợ siêu dữ liệu ảnh hưởng đến cách các đối tượng Thuộc tính được sử dụng làm đối tượng từ điển

  • Để đặt giá trị cho khóa, hãy thực hiện prop_object[key] = value hoặc prop_object[key] = value, metadata. Biểu mẫu đầu tiên sẽ giữ nguyên siêu dữ liệu của khóa. Bạn cũng có thể sử dụng phương thức setmeta() để đặt siêu dữ liệu của khóa

  • Để lấy giá trị của khóa, hãy làm giá trị, siêu dữ liệu = prop_object[key]. Nếu không có siêu dữ liệu cho khóa, siêu dữ liệu sẽ là một từ điển trống. Để chỉ truy xuất siêu dữ liệu cho một khóa, có thể sử dụng phương thức getmeta()

  • Khi được sử dụng làm trình vòng lặp, các đối tượng Thuộc tính sẽ chỉ trả về tất cả các khóa theo thứ tự không xác định. Không có siêu dữ liệu nào được trả về (nhưng có thể được truy xuất bằng getmeta())

Từ điển nội bộ chứa các cặp khóa-giá trị có thể được truy cập bằng thuộc tính thuộc tính. Xóa thuộc tính đó sẽ xóa tất cả các cặp khóa-giá trị khỏi đối tượng

Tuy nhiên, việc sửa đổi thuộc tính bằng thuộc tính đặc biệt này sẽ không sửa đổi siêu dữ liệu theo bất kỳ cách nào. Điều đó có nghĩa là xóa các thuộc tính bằng cách thực hiện del prop_obj. thuộc tính [key] sẽ không xóa siêu dữ liệu được liên kết khỏi đối tượng. Thay vào đó, hãy làm del prop_obj[key]

Tuy nhiên, thuộc tính properties vẫn hữu ích để đặt nhiều giá trị mặc định trước khi phân tích tệp thuộc tính