使用搁置模块给了我一些令人惊讶的行为。keys()、iter() 和 iteritems() 不会返回架子中的所有条目!这是代码:
cache = shelve.open('my.cache')
# ...
cache[url] = (datetime.datetime.today(), value)
之后:
cache = shelve.open('my.cache')
urls = ['accounts_with_transactions.xml', 'targets.xml', 'profile.xml']
try:
print list(cache.keys()) # doesn't return all the keys!
print [url for url in urls if cache.has_key(url)]
print list(cache.keys())
finally:
cache.close()
这是输出:
['targets.xml']
['accounts_with_transactions.xml', 'targets.xml']
['targets.xml', 'accounts_with_transactions.xml']
以前有没有人遇到过这种情况,是否有一种解决方法,而不知道所有可能的缓存键先验?