2011-02-15 36 views

Trả lời

20

Bạn có thể sử dụng ConfigParser suy

Trên đầu trang của các chức năng cốt lõi, SafeConfigParser hỗ trợ suy. Điều này có nghĩa là các giá trị có thể chứa các chuỗi định dạng tham chiếu đến các giá trị khác trong cùng một phần hoặc giá trị trong phần DEFAULT đặc biệt. Mặc định bổ sung có thể được cung cấp khi khởi tạo .

Ví dụ:

[My Section] 
foodir: %(dir)s/whatever 
dir=frob 
long: this value continues  
    in the next line 

sẽ giải quyết% (dir) s với giá trị của dir (frob trong trường hợp này). Tất cả các mở rộng tham chiếu được thực hiện theo yêu cầu .

dụ của bạn trở thành:

[general] 
name: my_name 
base_dir: /home/myhome/exp 

exe_dir: %(base_dir)s/bin 
+0

@martineau Yup, đã sửa câu trả lời của tôi. Cảm ơn – Rod

6

Thay vì "$ {foo}", viết "% (foo) s". (Xem http://docs.python.org/library/configparser.html và tìm kiếm cho "nội suy". Điều này làm việc cho một trong hai một ConfigParser bình thường hoặc một SafeConfigParser.)

+0

Sự cố của tôi đã được giải quyết. Cảm ơn bạn – emeth

+4

Cảm ơn! Trong mã của tôi, thiếu 's' sau khi'% (foo) 'khiến tôi phát điên. Đôi khi bạn phải nhìn vào nguồn đầu tiên, trước khi bạn nhận ra nó cũng nằm trong tài liệu! ;-) – cfi

1

Trong Python 3, bạn có thể sử dụng ${base_dir}/bin, và extended interpolation cho phép bạn sử dụng các biến từ các phần khác. Ví dụ:

[Common] 
home_dir: /Users 
library_dir: /Library 
system_dir: /System 
macports_dir: /opt/local 

[Frameworks] 
Python: 3.2 
path: ${Common:system_dir}/Library/Frameworks/ 

[Arthur] 
nickname: Two Sheds 
last_name: Jackson 
my_dir: ${Common:home_dir}/twosheds 
my_pictures: ${my_dir}/Pictures 
python_dir: ${Frameworks:path}/Python/Versions/${Frameworks:Python} 
Các vấn đề liên quan