Bạn có thể làm điều này trong một dòng mã.
Trong python 3, hãy thêm tiêu đề phần giả mạo vào dữ liệu tệp cấu hình của bạn và chuyển nó vào read_string()
.
from configparser import ConfigParser
parser = ConfigParser()
with open("foo.conf") as stream:
parser.read_string("[top]\n" + stream.read())
Bạn cũng có thể sử dụng itertools.chain()
để mô phỏng tiêu đề phần read_file()
. Cách này có thể tiết kiệm bộ nhớ hơn so với cách tiếp cận ở trên, có thể hữu ích nếu bạn có tệp cấu hình lớn trong môi trường thời gian chạy bị hạn chế.
from configparser import ConfigParser
from itertools import chain
parser = ConfigParser()
with open("foo.conf") as lines:
lines = chain(("[top]",), lines)
parser.read_file(lines)
Trong python 2, hãy thêm tiêu đề phần giả mạo vào dữ liệu tệp cấu hình của bạn, bọc kết quả trong một StringIO
đối tượng và chuyển nó vào readfp()
.
from ConfigParser import ConfigParser
from StringIO import StringIO
parser = ConfigParser()
with open("foo.conf") as stream:
stream = StringIO("[top]\n" + stream.read())
parser.readfp(stream)
Với bất kỳ cách tiếp cận nào trong số này, cài đặt cấu hình của bạn sẽ có sẵn trong parser.items('top')
.
Bạn cũng có thể sử dụng StringIO trong python 3, có lẽ để tương thích với cả trình thông dịch python cũ và mới, nhưng lưu ý rằng nó hiện đang tồn tại trong io
gói và readfp()
hiện không được dùng nữa.
Ngoài ra, bạn có thể cân nhắc sử dụng trình phân tích cú pháp TOML thay vì ConfigParser.