Как сохранить несколько данных в одном файле, используя python? - PullRequest
0 голосов
/ 09 мая 2020
def appendnew():
        file = open("emailpasswd.txt",'w')
        email = add
        password = pas
        file.write(email)
        file.write(password)
        file.close()

Я работаю над проектом под названием диспетчер паролей в python, для этого мне нужно сохранять пароли и электронные письма в файл, но когда я использую вышеуказанный код каждый раз, когда я ввожу новый пароль и адрес электронной почты python перезаписывает существующие данные, также мне нужно получать пароли, когда я набираю соответствующий адрес электронной почты, и наоборот, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Если мы хотим записать в файл без потери содержимого файла, нам нужно открыть файл в режиме добавления.

Функция open() имеет следующий параметр:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

2-й параметр используется для определения режима файла, в котором файл открыт, если мы хотим открыть файл в режиме добавления, мы должны сделать open('filename, 'a') a для добавления

you можно открыть файл как:

file = open("emailpasswd.txt",'a') # second paramter a for append mode

и сделать что-то вроде:

file.write(email) # writing content in file

и после работы вы можете закрыть он с

file.close() # close file, as you do not want to occupy resource when do not need them any longer

Python может выполнять такие действия по управлению ресурсами, как закрытие файла внутри себя, если вы хотите обрабатывать закрытие, как вещи для самого python, вы можете использовать

with open('emailpasswd.txt', 'a') as f:

и действуйте в соответствии с приведенным ниже кодом.

def appendnew():
    with open('emailpasswd.txt', 'a') as f:
        email = 'email'
        password = 'pass'
        f.write(email)
        f.write(password)

appendnew()
0 голосов
/ 09 мая 2020

Когда вы передаете 'w' в качестве режима open(), он сообщает ОС, что файл должен быть перезаписан, если файл с таким именем уже существует. Чтобы добавить к нему вместо этого, вы можете использовать режим 'a'. Вы можете найти список режимов в документации для open().

Чтобы получить пароль, принадлежащий адресу электронной почты, вам необходимо несколько изменить структуру файла. Замените ваши записи на file.write(f"{email}\0{password}\n"), затем повторите строки с file.readlines() и найдите ту, которая .startswith(f"{email}\0"), затем используйте line.split('\0', 1)[1], чтобы получить пароль.

...