Tôi đã đọc một phần của the docs và thấy rằng ConfigParser
trả về danh sách các cặp khóa/giá trị cho các tùy chọn trong một phần. Tôi nhận thấy rằng các khóa không cần phải là duy nhất trong một phần, nếu không trình phân tích cú pháp sẽ chỉ trả về một ánh xạ. Tôi thiết kế giản đồ tập tin cấu hình của tôi xung quanh giả định này, sau đó buồn bã nhận ra rằng đây không phải là trường hợp:Các khóa duy nhất của ConfigParser của Python cho mỗi phần
>>> from ConfigParser import ConfigParser
>>> from StringIO import StringIO
>>> fh = StringIO("""
... [Some Section]
... spam: eggs
... spam: ham
... """)
>>> parser = ConfigParser()
>>> parser.readfp(fh)
>>> print parser.items('Some Section')
[('spam', 'ham')]
Sau đó, tôi quay lại và thấy một phần của các tài liệu mà tôi nên đã đọc:
Các mục thường được lưu trữ trong một từ điển nội trang dựng sẵn . Một loại thay thế từ điển có thể được chuyển đến phương thức khởi tạo ConfigParser. Ví dụ: nếu loại từ điển được thông qua để sắp xếp các khóa của nó, các phần sẽ là được sắp xếp trên ghi lại, cũng như các phím trong mỗi phần.
Để giữ sơ đồ tệp cấu hình hiện có (tôi thực sự thích bây giờ;) Tôi đang nghĩ đến việc truyền một đối tượng giống như bản đồ đã đề cập ở trên, tích lũy giá trị thay vì ghi đè chúng. Có cách nào đơn giản hơn để ngăn chặn sự sụp đổ khóa/giá trị mà tôi bị thiếu không? Thay vì làm một adapter điên (có thể phá vỡ nếu thay đổi thực hiện của ConfigParser
) nên tôi chỉ cần viết một biến thể của ConfigParser
chính nó?
Tôi cảm thấy đây có thể là một trong những khoảnh khắc 'duh' mà tôi chỉ thấy các giải pháp khó khăn.
[Edit:] Dưới đây là một ví dụ chính xác hơn về làm thế nào tôi muốn sử dụng cùng một chìa khóa nhiều lần:
[Ignored Paths]
ignore-extension: .swp
ignore-filename: tags
ignore-directory: bin
Tôi không thích cú pháp dấu phẩy phân cách danh sách bởi vì nó cứng trên mắt khi bạn mở rộng nó thành nhiều giá trị; ví dụ: danh sách được phân tách bằng dấu phẩy gồm năm mươi phần mở rộng sẽ không thể đọc được.
Tôi nghĩ việc sử dụng danh sách sẽ dễ đọc hơn 50 dòng 'ignore-extension: ...' –
Thật sao? Tôi không đồng ý ... với mỗi một dòng riêng biệt, bạn chỉ có thể quét xuống danh sách - Tôi chưa bao giờ tìm thấy các danh sách được phân cách bằng dấu phẩy của các phần mở rộng ba chữ cái là đẹp. Tôi cũng dự đoán mọi người muốn dễ dàng nhận xét bất kỳ tùy chọn cụ thể nào, những dòng riêng biệt nào có lợi cho bạn. – cdleary