Ich habe Playlists in ein Verzeichnis, basierend auf ihrer Größe hochgeladen.Python - ersetzen vs Update-Datei
erste lade ich die folgende dict
in ein leeres Verzeichnis:
playlist_pre = {'user1': {u'Codex': 1.0, u'High And Dry': 1.0, u'Hey': 1.0, u'O': 1.0, u'Videotape': 1.0, u'Pyramid Song': 1.0}}
dann diese:
playlist_pos = {'user1': {u'With Or Without You - Jo Whiley Show - BBC Live Session': 1.0, u'Codex': 1.0, u'Daydreaming': 1.0, u'The Man Who Sold The World - 2015 Remastered Version': 1.0, u'High And Dry': 1.0, u'Hey': 1.0, u'O': 1.0, u'Sparks': 1.0, u'Videotape': 1.0, u'Asleep - 2011 Remastered Version': 1.0, u'Pyramid Song': 1.0, u'Nude': 1.0}}
das ist, wie ich Wiedergabelisten Verzeichnis laden, immer wieder:
if os.path.exists('db/user1.json'):
if len(playlist_pos['user1'].values()) < 3:
with open('db/user1.json', 'r+') as f:
db = playlist_pos
db = json.load(f)
# increment track count
updateTrackCounts(db,value=1.0)
#update json here
f.seek(0)
f.truncate()
json.dump(db, f)
print (db)
else:
with open('db/user1.json', 'r+') as f:
db = playlist_pos
db = json.load(f)
# increment track count
updateTrackCounts(db,value=1.0)
#update json here
f.seek(0)
f.truncate()
json.dump(db, f)
print (db)
So lade ich die erste, playlist_pre
, in eine leere di Pfarrhaus.
else:
if len(playlist_pre['user1'].values()) < 3:
with open('db/user1.json', 'w') as f:
json.dump(playlist_pre, f)
else:
with open('db/user1.json', 'w') as f:
json.dump(playlist_pre, f)
ps: function
werden genannt:
def updateTrackCounts(d, value=0):
for i in d:
if isinstance(d[i], dict):
updateTrackCounts(d[i], value)
elif isinstance(d[i], float):
d[i] += value
EDIT
dieser Ausgang gewünscht wird, wenn playlist_pre
nach playlist_pos
erzeugt wird: eine neue Datei vor und nach dem Verbinden Wiedergabelisten;
wiederholt Spuren haben eine incremented value
und neue Tracks haben default value = 1.0
joined_playlist = {'user1':
{u'Codex': 2.0, u'High And Dry': 2.0, u'Hey': 2.0, u'O': 2.0, u'Videotape': 2.0, u'Pyramid Song': 2.0, u'With Or Without You - Jo Whiley Show - BBC Live Session': 1.0, u'Daydreaming': 1.0, u'The Man Who Sold The World - 2015 Remastered Version': 1.0, u'O': 1.0, u'Sparks': 1.0, u'Asleep - 2011 Remastered Version': 1.0, u'Nude': 1.0}}
Es scheint mir, dass Sie immer laden 'db = json.load (f)' und das zeigt immer auf 'user1.json'. – sal
Wie kann ich das beheben? –
Auf die Anweisungen 'db = playlist2' und' db = playslist1' folgt das gleiche 'db = json.load (f)': warum überschreibst du die Variable? – sal