Die Verwendung des Regalmoduls hat mir ein überraschendes Verhalten gegeben. keys(), iter() und iteritems() geben nicht alle Einträge im Regal zurück! Hier ist der Code:Problem mit Regalmodul?
cache = shelve.open('my.cache')
# ...
cache[url] = (datetime.datetime.today(), value)
später:
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()
und hier ist die Ausgabe:
['targets.xml']
['accounts_with_transactions.xml', 'targets.xml']
['targets.xml', 'accounts_with_transactions.xml']
Hat jemand in diese vor laufen, und gibt es eine Abhilfe, ohne alle möglichen Cache-Schlüssel zu wissen, a priori?
Welches DBM-Modul verwenden Sie? Klingt für mich wie ein Käfer. –
whichdb.whichdb ('my.cache') => dbm –
(übrigens, das ist Python 2.5 auf einem Mac) –