Управление паролями всегда очень деликатная тема, но, поскольку вы только начинаете и не спрашиваете о безопасности, давайте посмотрим, как мы можем загрузить и написать простой файл JSON очень простым способом.
Сначала давайте перенесем фактические данные в отдельный файл, который мы можем назвать как database.json
:
{"email": "F7minlBDDuvMJuxESSKHFhTxFtjVB6",
"blog": "VmALvQyKAxiVH5G8v01if1MLZF3sdt",
"luggage": "12345"}
Затем мы изменим код приложения следующим образом:
#!/usr/env python3
"""
pw.py - An insecure password locker program.
"""
import sys
import pyperclip
import json
import os
# The path to the database file
DB_FILE = "~/Desktop/database.json"
def main():
if len(sys.argv) < 2:
print('Usage: python pw.py [account] - copy account password')
sys.exit()
account = sys.argv[1] # first command line arg is the account name
db = os.path.expanduser(DB_FILE)
with open(db) as f:
data = json.load(f) # Load a dictionary for disk
if account in data:
pyperclip.copy(data[account])
print('Password for ' + account + ' copied to clipboard.')
else:
print('There is no account named ' + account)
print('Input the password for the said account to update the info.')
new_passwd = {account: input()} # create a dictionary with the new account data
data.update(new_passwd) # update the main dictionary with the new data
with open(db, 'w') as f:
json.dump(data, f) # convert to JSON and write to disk
print('Info updated!')
if __name__ == "__main__":
main()
Для такой простой задачи есть несколько форматов файлов, которые вы можете использовать.JSON - это формат, который отображается в словари Python логичным и простым для понимания способом, но вы также можете реализовать его в CSV, не добавляя особых сложностей.Но в таких приложениях вы очень скоро почувствуете необходимость чего-то более практичного и надежного.Например, по мере роста вашей базы данных может оказаться нецелесообразным загружать всю базу данных в память.И это может вызвать еще больше проблем с безопасностью.
Не торопитесь, изучая основы, подобные этим, а затем изучите модуль sqlite
.Он позволяет использовать SQL в реляционной базе данных с одним файлом и проложит вам путь как для мощных приложений, так и для дальнейшего обучения.