如何让json文件永久记录我的数据?

时间:2016-11-24 05:37:27

标签: python-3.x

每次运行代码时,数据都会覆盖signupdatabase.json的内容。

如何避免覆盖现有文件内容?

import json

with open('signupdatabase.json','w') as f:
    json.dump('b',f)
    json.dump('a',f)


print('good')

2 个答案:

答案 0 :(得分:1)

有几种选择。您可以将用户名/密码存储在程序启动时从文件加载的单个dict中,并在更新时保存。加密密码是一个好主意,但超出了这个问题。

import json
import os
import getpass

db_filename = 'signupdatabase.json'

# create on first use
if not os.path.exists(db_filename):
    with open(db_filename, 'w') as f:
        json.dump({}. f)

# open database
with open(db_filename) as f:
    db = json.load(f)

user = input("User Name: ")
pw = getpass.getpass()

db[user] = pw

# save database
with open(db_filename, 'a') as f:
    db = json.dump(db, f)

答案 1 :(得分:0)

  1. append模式打开文件,并在每行后添加'\n'

    with open('signupdatabase.json','a') as f:
        json.dump('b\n',f)
        json.dump('a\n',f)
    
  2. 不要将JSON文件用作数据库。

  3. 不要以纯文本格式保存密码,即使在“正确”的数据库中也不例外。