Có khá một số hướng dẫn ở đây. Theo tôi cẩn thận.
Mô-đun shelve
được triển khai ở trên cùng của anydbm
module. Module này đóng vai trò như một mặt tiền cho 4 triển khai DBM cụ thể khác nhau, và nó sẽ chọn các mô-đun đầu tiên có sẵn khi tạo một cơ sở dữ liệu mới, theo thứ tự sau:
dbhash
(bị phản đối nhưng vẫn là anydbm
lựa chọn đầu tiên). Đây là proxy cho bsddb
module, .open()
thực sự là bsddb.hashopen()
gdbm
, mô-đun Python cho thư viện GNU DBM, cung cấp nhiều chức năng hơn mô-đun dbm
có thể cung cấp khi được sử dụng với cùng loại này.
dbm
, mô-đun proxy sử dụng thư viện ndbm
, BSD DB và GNU DBM (được chọn khi Python được biên dịch).
dumbdbm
, triển khai thuần túy-python.
Đây là phạm vi lựa chọn giúp các tệp shelve
xuất hiện để phát triển các tiện ích bổ sung trên các nền tảng khác nhau.
Module dumbdbm
là một trong đó bổ sung thêm các .bak
, .dat
và .dir
phần mở rộng:
mở một cơ sở dữ liệu dumbdbm và trả về một đối tượng dumbdbm. Đối số tên tệp là tên cơ sở của tệp cơ sở dữ liệu (không có bất kỳ tiện ích mở rộng cụ thể nào). Khi cơ sở dữ liệu dumbdbm được tạo, các tệp có các tiện ích mở rộng .dat
và .dir
được tạo.
Tệp .dir
được di chuyển đến .bak
khi các chỉ mục mới được cam kết cho các thay đổi được thực hiện cho cấu trúc dữ liệu.
Điều đó có nghĩa là khác ba tùy chọn cho anydbm
không khả dụng trên nền tảng của bạn.
Các định dạng khác có thể cung cấp cho bạn các tiện ích mở rộng khác. Mô-đun dbm
có thể sử dụng .dir
, .pag
hoặc .db
, tùy thuộc vào thư viện nào được sử dụng cho mô-đun đó.
Nguồn
2013-04-26 07:45:02
Có thể chương trình đang thực hiện điều đó. Mô đun [shelve] (http://hg.python.org/cpython/file/e0c0bcd60033/Lib/shelve.py) không làm bất cứ điều gì như thế này. – mata
'" Là một tác dụng phụ, phần mở rộng có thể được thêm vào tên tệp và nhiều hơn một tệp có thể được tạo. "' [(C)] (http://docs.python.org/2/library/shelve. html # shelve.open) Tuy nhiên, điều này không trả lời _why_. –