shelve :
import shelve
scores = shelve.open('scores')
scores['joe_bloggs'] = 1
print(scores['joe_bloggs'])
scores['joe_bloggs'] += 1
print(scores['joe_bloggs'])
scores.close()
:
1
2
:
scores = shelve.open('scores')
print(scores['joe_bloggs'])
:
2
"" - , - . "dbm" , ( !) Python - , . , , -. .
:
>>> dict(scores)
{'joe_bloggs': 2}
:
username = 'joe_bloggs'
with shelve.open('scores') as scores:
if username in scores:
scores[username] += 1
print("already exists")
else:
print("written to file")
scores[username] = 1
, , defaultdict. :
from collections import defaultdict
import shelve
with shelve.open('scores', writeback=True) as scores:
scores['scores'] = defaultdict(int)
scores['scores'][user] += 1:
username = 'joe_bloggs'
with shelve.open('scores', writeback=True) as scores:
scores['scores'][user] += 1
:
with shelve.open('scores', writeback=True) as scores:
for user in ['joe_bloggs', 'user2']:
for score in range(1, 4):
scores['scores'][user] += 1
print(user, scores['scores'][user])
:
joe_bloggs 1
joe_bloggs 2
joe_bloggs 3
user2 1
user2 2
user2 3