⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tdb.py

📁 samba服务器!
💻 PY
字号:
"""Provide a more Pythonic and object-oriented interface to tdb."""## Swig interface to Samba## Copyright (C) Tim Potter 2006## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.#   # This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.#   # You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.#import osfrom tdb import *# Open flagsDEFAULT        = TDB_DEFAULTCLEAR_IF_FIRST = TDB_CLEAR_IF_FIRSTINTERNAL       = TDB_INTERNALNOLOCK         = TDB_NOLOCKNOMMAP         = TDB_NOMMAP# Class representing a TDB fileclass Tdb:    # Create and destroy Tdb objects    def __init__(self, name, hash_size = 0, flags = TDB_DEFAULT,                 open_flags = os.O_RDWR | os.O_CREAT, mode = 0600):        self.tdb = tdb_open(name, hash_size, flags, open_flags, mode)        if self.tdb is None:            raise IOError, tdb_errorstr(self.tdb)            def __del__(self):        self.close()    def close(self):        if hasattr(self, 'tdb') and self.tdb is not None:            if tdb_close(self.tdb) == -1:                raise IOError, tdb_errorstr(self.tdb)            self.tdb = None    # Random access to keys, values    def __getitem__(self, key):        result = tdb_fetch(self.tdb, key)        if result is None:            raise KeyError, '%s: %s' % (key, tdb_errorstr(self.tdb))        return result    def __setitem__(self, key, item):        if tdb_store(self.tdb, key, item) == -1:            raise IOError, tdb_errorstr(self.tdb)    def __delitem__(self, key):        if not tdb_exists(self.tdb, key):            raise KeyError, '%s: %s' % (key, tdb_errorstr(self.tdb))        tdb_delete(self.tdb, key)    def has_key(self, key):        return tdb_exists(self.tdb, key)    # Tdb iterator    class TdbIterator:        def __init__(self, tdb):            self.tdb = tdb            self.key = None        def __iter__(self):            return self                    def next(self):            if self.key is None:                self.key = tdb_firstkey(self.tdb)                if self.key is None:                    raise StopIteration                return self.key            else:                self.key = tdb_nextkey(self.tdb, self.key)                if self.key is None:                    raise StopIteration                return self.key    def __iter__(self):        return Tdb.TdbIterator(self.tdb)    # Implement other dict functions using TdbIterator    def keys(self):        return [k for k in iter(self)]    def values(self):        return [self[k] for k in iter(self)]    def items(self):        return [(k, self[k]) for k in iter(self)]    def __len__(self):        return len(self.keys())    def clear(self):        for k in iter(self):            del(self[k])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -