Я не могу добавить новую строку при написании файла на Python

#python #file-writing

Вопрос:

Я создаю файл данных на python:

 use = input('')
if use == '2':
  taken = []
  names = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
  file_name1 = random.choice(names)
  file_name2 = random.choice(names)
  file_name3 = random.choice(names)
  file_name4 = random.choice(names)
  file_name = (file_name1   file_name2   file_name3   file_name4)
  if file_name in taken:
    print('An error occurred, please try again!')
  else:
    taken.append(file_name)
    file = open('logs.txt', 'w')
    file.write(file_name   'n')
    file.close()
    print('Done')
 

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

Комментарии:

1. Какого поведения вы хотите? if file_name in taken: это условие выполняется всегда False , затем else выполняется ветвь, которая записывает ‘logs.txt` файл.

2. мне это нужно, поэтому напишите в новой строке файла, но вместо этого он продолжает изменять файл

3. Вы хотите добавлять по одной строке каждый раз, когда запускаете этот скрипт?

4. Да, мне нужно написать объект, затем перейти к строке pa и написать следующий объект

Ответ №1:

Я думаю, что вы хотите добавить в файл вместо записи (усечение файла, если он уже существует).:

     # ...

    else:
        taken.append(file_name)
        file = open('logs.txt', 'a ')  # 'a ' mode instead of 'w' mode
        file.write(file_name   'n')
        file.close()
    # ...
 

См. документ.

Ответ №2:

Используйте команду открыть(файл, режим), указав путь к файлу как файл и режим как «w», чтобы открыть файл для записи. Файл вызова. запись(данные) с данными в виде строки, содержащей символ новой строки «n» в качестве последнего символа для записи строки в файл и создания новой строки для следующей записанной строки.