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

📄 whichdb.py

📁 python s60 1.4.5版本的源代码
💻 PY
字号:
# Portions Copyright (c) 2005 Nokia Corporation 
"""Guess which db package to use to open a db file."""

import os

def whichdb(filename):
    import struct

    # Check for dbm first -- this has a .pag and a .dir file
    try:
        f = open(filename + os.extsep + "pag", "rb")
        f.close()
        f = open(filename + os.extsep + "dir", "rb")
        f.close()
        return "dbm"
    except IOError:
        pass

    # Check for dumbdbm next -- this has a .dir and and a .dat file
    try:
        f = open(filename + os.extsep + "dat", "rb")
        f.close()
        f = open(filename + os.extsep + "dir", "rb")
        try:
            if f.read(1) in ["'", '"']:
                return "dumbdbm"
        finally:
            f.close()
    except IOError:
        pass

    # Check for e32dbm
    try:
        if not filename.endswith('.e32dbm'):
            name=filename+".e32dbm"
        else:
            name=filename
        f=open(name,"rb")
        f.close()
        return "e32dbm"
    except IOError:
        pass

    # See if the file exists, return None if not
    try:
        f = open(filename, "rb")
    except IOError:
        return None

    # Read the start of the file -- the magic number
    s16 = f.read(16)
    f.close()
    s = s16[0:4]

    # Return "" if not at least 4 bytes
    if len(s) != 4:
        return ""

    # Convert to 4-byte int in native byte order -- return "" if impossible
    try:
        (magic,) = struct.unpack("=l", s)
    except struct.error:
        return ""

    # Check for GNU dbm
    if magic == 0x13579ace:
        return "gdbm"

    # Check for BSD hash
    if magic in (0x00061561, 0x61150600):
        return "dbhash"

    # BSD hash v2 has a 12-byte NULL pad in front of the file type
    try:
        (magic,) = struct.unpack("=l", s16[-4:])
    except struct.error:
        return ""

    # Check for BSD hash
    if magic in (0x00061561, 0x61150600):
        return "dbhash"

    # Unknown
    return ""

⌨️ 快捷键说明

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