码迷,mamicode.com
首页 > 编程语言 > 详细

python之shelve模块

时间:2018-10-01 12:55:11      阅读:348      评论:0      收藏:0      [点我收藏+]

标签:key   文件中   may   res   cat   shelve   over   ati   using   

1、shevle简介

  利用 shelve 模块, 你可以将 Python 程序中的变量保存到二进制的 shelf 文件中。这样, 程序就可以从硬盘中恢复变量的数据。 shelve 模块让你在程序中添加“保存”和“打开” 功能。例如, 如果运行一个程序,并输入了一些配置设置,就可以将这些设置保存到一个 shelf 文件,然后让程序下一次运行时加载它们。

2、方法

2.1、写入数据

import shelve
import datetime
d = shelve.open(shelve_test)  
cats = ["Zophie", "Pooka", "Simon"]
d["cats"] = cats
d[date] = datetime.datetime.now()
d.close()

2.2、读取数据

import shelve
d = shelve.open("shelve_test") # 打开一个文件
print(d["cats"])
print(d["date"])

3、实例

import shelve
d = shelve.open("shelve_data") # open -- file may get suffix added by low-level library

key = "you"
data = 250

d[key] = 250 # store data at key (overwrites old data if using an existing key)
data = d[key] # retrieve a COPY of data at key (raise KeyError if no such key)
del d[key] # delete data stored at key (raises KeyError if no such key)
flag = key in d # true if the key exists
klist = list(d.keys()) # a list of all existing keys (slow!)

# as d was opened WITHOUT writeback=True, beware:
d[xx] = [0, 1, 2] # this works as expected, but...
d[xx].append(3) # *this doesn‘t!* -- d[‘xx‘] is STILL [0, 1, 2]!

# having opened d without writeback=True, you need to code carefully:
temp = d[xx] # extracts the copy
temp.append(5) # mutates the copy
d[xx] = temp # stores the copy right back, to persist it

# or, d=shelve.open(filename,writeback=True) would let you just code
# d[‘xx‘].append(5) and have it work as expected, BUT it would also
# consume more memory and make the d.close() operation slower.
d.close()

 

python之shelve模块

标签:key   文件中   may   res   cat   shelve   over   ati   using   

原文地址:https://www.cnblogs.com/bad-robot/p/9734449.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!