Цель:
У меня есть файл с именем airplanes.txt
. Он уже содержит некоторые из моих любимых самолетов:
Boeing 747
Airbus A380
Я ввожу данные в свое основное приложение, чтобы добавить самолет, указанный пользователем, в этот airplanes.txt
файл.
Пример: Please type the name of the plane you want to add to your favourites list:
< >
Если вы посмотрите на файл airplanes.txt
, вы увидите:
Boeing 747
Airbus A380
Boeing 737
Мой вопрос: мой код ниже работает, сначала получая существующие данные в airplanes.txt
.
airplane_file = open('airplanes.txt', 'r')
favourite_airplanes = [ line.strip('\n') for line in airplane_file.readlines()]
airplane_file.close()
Затем я закрываю файл, а затем беру пользовательский ввод.
add_plane = input('Enter The Airplane You Would Like To Add To This List: ')
Наконец, я записываю обратно все существующие данные, которые были в файле, а затем добавляю пользовательский ввод для этого.
if add_plane != None:
reopened_airplane_file = open('airplanes.txt', 'r+')
for airplane in favourite_airplanes:
reopened_airplane_file.write(f'{airplane}\n')
else:
reopened_airplane_file.write(f'{add_plane}\n')
Я чувствую, что должен быть какой-то способ записывать данные в существующие файлы, которые содержат данные, без необходимости перезаписывать все данные обратно в них + новые данные.
Это может становиться все более утомительным, поскольку для огромных файлов потребуется огромное количество времени, чтобы записать только существующие данные обратно в файл, а затем записать новые данные, которые вы ожидаете добавить.
I я попытался сделать этот вопрос как можно более читабельным, деконструировав мой код, поэтому я надеюсь, что вы не возражаете против длинного вопроса. :)
Изменить:
Это сработало для меня:
with open('airplanes.txt', 'a+') as file:
add_plane = input('Enter The Airplane You Would Like To Add To This List: ')
file.write(f'{add_plane}\n')
Почему это не работает: я использовал режим r+
, что означало, что я была перезаписана, хотя режим a+
был подходящим для использования! a+
открыт для чтения и добавления (запись в конце файла). Если файл не существует, создается.