2010-08-06 69 views
22

Cách nào tốt hơn để tạo tệp cài đặt cho các chương trình Python, mô-đun tích hợp (ConfigParser) hoặc dự án độc lập (ConfigObj)?Cái gì tốt hơn, ConfigObj hoặc ConfigParser?

+1

Ngoài ra, YAML có tốt không? – Apocryphon

+2

"Tốt hơn" phụ thuộc vào ngữ cảnh. Đơn giản, phức tạp? Loại cài đặt nào? – detly

+3

Apocryphon: tôi có thể đề nghị bạn chỉnh sửa câu hỏi cho một cái gì đó như: "Con và pro của ConfigParser là gì, ConfigObj, YAML" –

Trả lời

4

Cho đến nay, tôi đã tìm thấy ConfigParser đủ mọi lúc tôi sử dụng. Ngoài ra, nó là một pin đi kèm chứ không phải là thư viện của bên thứ ba.

Mặc dù tôi phải thừa nhận, các mẫu mã trong tài liệu ConfigObj khiến cho ConfigParser trông thực sự kém khi so sánh. Đối với một kịch bản mà rất nhiều thao tác tập tin .ini, tôi muốn propably thích nó.

+0

Tôi đồng ý. Tôi đã tìm thấy rằng các tính năng tôi đã mất tích trong ConfigParser, có trong ArgParse mà cũng là một pin bao gồm kể từ 2.7. Nơi tôi có python 2,7 có sẵn, tôi đã di chuyển đến ArgParse. – Hernan

17

Gần đây tôi đã chuyển từ configparser thành configobj và tôi rất vui mừng vì đã làm như vậy.

Đối với tôi, sự khác biệt lớn nhất là config2j's validator. Nó cho phép tôi rất dễ dàng/ngắn gọn (1) xác định loại và giá trị chấp nhận được cho mỗi mục nhập, và (2) thiết lập mặc định.

Hai tính năng đó giúp tôi tiết kiệm rất nhiều mã và ngăn chặn rất nhiều lỗi. Plus, thực sự không có thêm chi phí để sử dụng configobj về sự phức tạp của mã của tôi, và thư viện là khá nhỏ.

+0

Đối với hồ sơ, tôi tìm thấy giới thiệu tốt nhất để configobj được [hướng dẫn này] (http://www.voidspace.org.uk/python/articles/configobj.shtml) - đó là một chút ngày, nhưng giải thích các hoạt động cơ bản và triết học tốt hơn tài liệu, imho. –

5

Tùy thuộc vào phiên bản Python của bạn, nó có thể gây tranh cãi cho dù câu trả lời câu hỏi của bạn, nhưng sau một cái nhìn ngắn tại ConfigParser và ConfigObj, tôi giải quyết cho configparser, phiên bản Python 3 của ConfigParser. There’s also a backported version on PyPI.

ConfigParser có vẻ rườm rà với tôi, thậm chí có thể-tôi dám nói it-unpythonic, và với ConfigObj tôi gặp phải một vấn đề bí truyền với danh sách (Tôi muốn để có thể sắp xếp chúng theo chiều dọc, vì tôi có được thực sự dài) , và nó đã không giúp đỡ rằng phiên bản mới nhất đã được xuất bản hơn hai năm trước đây. API của configparser, tuy nhiên, trông như spiffy như của ConfigObj (mặc dù không phải là tính năng phong phú), và khi chúng tôi chuyển sang Python 3, tôi có thể có thể chuyển sang phiên bản được xây dựng trong một cách dễ dàng.

Nhân tiện, nó hoạt động tuyệt vời cho đến nay.

Các vấn đề liên quan