#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» в качестве последнего символа для записи строки в файл и создания новой строки для следующей записанной строки.