pythonflag=false_Python搁架打开(…,flag='n')不创建空sh

我使用的是Python shelve模块和以下Python版本:

Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48) [MSC v.1600 32 bit (Intel)] on win32。的flag参数搁架打开描述方法here:The optional flag parameter has the same interpretation as the flag parameter of dbm.open().

dbm flag参数描述为here:'n' Always create a new, empty database, open for reading and writing

但以下程序并没有像我预期的那样工作:import shelve

import os

import os.path

import shutil

myshelvedir='C:\\testdir'

myshelvefile=os.path.join(myshelvedir,'myshelve')

os.mkdir(myshelvedir)

try:

myshelve=shelve.open(myshelvefile)

try:

myshelve['key1']='value1'

print(1,dict(myshelve))

finally:

myshelve.close()

myshelve=shelve.open(myshelvefile,'n')

try:

myshelve['key2']='value2'

print(2,dict(myshelve))

finally:

myshelve.close()

finally:

shutil.rmtree(myshelvedir)

结果是

^{pr2}$

我期待的第二条线2 {'key2': 'value2'}

因为搁置架是用'n'标志打开的,因此打开后数据库应该是空的。在

我错过什么了吗?在

附加测试:

打开

Python 3.0.1 (r301:69561, Feb 13 2009, 20:04:18) [MSC v.1500 32 bit (Intel)] on win32

我也得到

2 {'key2': 'value2', 'key1': 'value1'}

打开

Python 2.6.4 (r264:75706, Jun 27 2012, 05:45:50) [C] on sunos5

我得到了预期的结果

(2, {'key2': 'value2'})

也在

Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win 32

我明白了

(2, {'key2': 'value2'})

所以这是3的一个新特性或者一个bug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值