プレイリストは、サイズに基づいてディレクトリにアップロードされています。Python - vs updateファイルを置き換えます。
最初、私は空のディレクトリに次のdict
をアップロード:
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}}
そして、この1:
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}}
これは私が何度も何度も、ディレクトリへのプレイリストをアップロードする方法です:
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)
これは最初のアップロード方法です(playlist_pre
)長門
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
が呼び出される:
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
playlist_pre
がplaylist_pos
後に生成された場合、これは、出力が所望される:前と後のプレイリストを接合する新しいファイル。
繰り返しトラックがincremented value
持っている、と新しいトラックは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}}
あなたは常に 'db = json.load(f)'をロードしていて、常に 'user1.json'を指しているようです。 – sal
これを修正するにはどうすればよいですか? –
'db = playlist2'と' db = playslist1'の文の後には、同じ 'db = json.load(f)'が続きます:なぜあなたは変数を上書きしていますか? – sal