@Vladosio

Работа с файлами и списком, как обратно передать изменённый список?

У меня есть несколько функций и кнопок с полями ввода, а также список и чтобы его сохранить данные берутся из файла, а потом передаются в список. Мне нужно добавлять, изменять и удалять данные в случае чего-либо. Добавление я сделал, а потом изменение и удаление как-то не получается.

#тут открывается файл и передается в список all_words
file2 = open('imena.txt', "r")

all_words = []
line = file2.readline().split(', ')
while line:
    all_words.extend(line)
    line = file2.readline().split()
file2.close()

#тут вывод всех имён из файла
def imena():
    file1 = open('imena.txt', "r")
    all_words = []
    line = file1.readline().split()
    while line:
        all_words.extend(line)
        line = file1.readline().split()
    im2 = all_words
    print('Список имён:')
    t = -1
    for i in range(len(im2)):
        t = t + 1
        print(t,im2[i])
    file1.close()

#тут добавление имени в файл
def dob_im():
    a2 = ln3.get()
    file = open('imena.txt', "r+")
    file.write(str(a2) + ', ')
    all_words = []
    line = file.readline().split()
    while line:
        all_words.extend(line)
        line = file.readline().split()
    file.close()

#тут я попробовал сделать изменение 
def izm_im():
    a3 = ln4.get()
    a4 = ln5.get()
    file = open('imena.txt', "r+")
    all_words = []
    line = file.readline().split()
    while line:
        all_words.extend(line)
        line = file.readline().split()
    all_words.insert(int(a3),str(a4))
    print(all_words)  
    file.close()

#удаление пока не делал, т.к. изменение не получилось

Список изменяется, но как его обратно записать в файл, чтобы оно не просто добавилось к старому, а изменилось? То есть по идее файл должен стать пустым, а потом должен быть заполнен содержимым списка.
Команда
os.system(r'nul>imena.txt')
(вроде такая) вызывает ошибку отказа в доступе.
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
yupiter7575
@yupiter7575
Python программист
1. r+ это открывается файл на чтение и добавление (а не на перезапись) надо несколько раз открывать файлы.
2. Открывайте файлы как нормальные люди конструкцией with as
3. не называйте имена переменных/функция русскими словами написаными английскими буквами
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы