Maison  >  Article  >  développement back-end  >  Une brève introduction au module shelve en Python (avec des exemples)

Une brève introduction au module shelve en Python (avec des exemples)

不言
不言original
2018-09-25 17:15:393326parcourir

Cet article vous apporte une brève introduction au module shelve en Python (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

shelve : Un module de persistance des objets, qui enregistre les objets dans des fichiers (le fichier de stockage de données par défaut est binaire) et peut conserver n'importe quel format de données Python pris en charge par pickle

La seule méthode dans shelve :

shelve.open(filename,flag = 'c', protocol = None, writebake = False)

'n' : Toujours ouvrir en mode lecture-écriture et créer un nouveau fichier de stockage de données vide
    filename 关联的文件路径
    flag  'r'   :以只读模式打开一个已经存在的数据存储文件
     'w'  :以读写模式打开一个已经存在的数据存储文件
     'c'   :(默认)以读写模式打开一个数据存储文件,如果不存在则创建
     'n'   :总是以读写模式打开并且创建一个新的空数据存储文件
    protocol 表示序列化数据所使用的协议,默认为 None(pickle v3)
    writebake 表示是否开启回写功能
    nom du fichier

    Fichier associé path
    flag
    import shelve
    date = shelve.open('family.txt')         # Python的自处理系统会自动生成三个文件
    date['father'] = 'Presly'                        # 默认为创建并且写入“c”
    date['mather'] = 'Vera'
    date['baby'] = [123, ]
    date.close()
    m = shelve.open('family.txt', falg= 'r', writebake=True)          # 当writebake设置为True时,文件里才能直接添加
    print(m['baby']) 
    m['baby'].append(345)
    print(m['father'])
    print('-------------') 
    for key, value in m.items():           # 以字典的格式 
        print(key, ':', value) 
    m.close()
    [123]
    Presly
    -------------
    father : Presly
    mather : Vera
    baby : [123,345]
    'r' : Ouvrir un fichier de stockage de données existant en mode lecture seule

    'w' : Ouvrir un fichier de stockage de données existant en mode lecture-écriture
    'c' : (Par défaut) Ouvrir un fichier de stockage de données en mode lecture-écriture, créer le s'il n'existe pas
  • protocole

    td>

  • indique le protocole utilisé pour sérialiser les données, la valeur par défaut est Aucun (pickle v3)
    writebake td>
  • Indique s'il faut activer la fonction de réécriture

  • 1 Le fichier peut être comme la clé Store -. valeur comme un dictionnaire (Remarque : la clé doit être une chaîne, la valeur peut être n'importe quel type de données)

    sérialisation

    peut sérialiser les données de classe, puis désérialiser les éléments
    import shelve
    
    
    def store_information(database):
        info = {}
        ID = input('Enter the ID number:')
        info['name'] = input('Enter the name:')         # 将name ,age , phone 存入字典info里
        info['age'] = input('Enter the age:')
        info['phone'] = input('Enter the phone:')
        database[ID] = info                            # 用ID : info 存入 database文件
    
    
    def lookup_information(database):
        ID = input('Enter the ID:')
        field = input('What would you like to know?(name,age,phone)')
        field = field.strip().lower()
        print(database[ID][field])              # 通过输入的ID与 field 直接打印结果
    
    
    def print_help():
        print('Please enter the help command:')
        print('store  :store informatinon to database')
        print('lookup :look up information by numID')
        print('quit   :save information and quit')
        print('?      :print help command')
    
    
    def enter_command():
        cmd = input('Enter command (? for help)')
        cmd = cmd.strip().lower()
        return cmd
    
    
    def main():
        database = shelve.open('db.dat')
        try:
            while True:
                cmd = enter_command()
                if cmd == 'store':
                    store_information(database)           # 当if函数结束,自动跳转到cmd = enter_command()行
                elif cmd == 'lookup':
                    lookup_information(database)
                elif cmd == '?':
                    print_help()
                elif cmd == 'quit':
                    return                            # 跳出while循环
        finally:
            database.close()
    
    
    if __name__ == '__main__': main()
    La différence de pickle est que pickle ne peut charger les éléments que dans l'ordre de vidage, tandis que shelve peut directement extraire à plusieurs reprises des valeurs clés différentes ou identiques qui sont stockées dans le fichier, 3. l'étagère peut effectuer des opérations similaires aux bibliothèques, ajouter, supprimer, modifier et vérifier

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn