目标:
我有一个名为 airplanes.txt
的文件,其中已经包含了一些我最喜欢的飞机:
Boeing 747
Airbus A380
我在我的主应用程序中获取用户输入,以便将用户指定的飞机添加到airplanes.txt
文件中。
示例:
请输入您想要添加到收藏夹列表中的飞机名称:
<<Boeing 737>>
如果你现在查看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')
我觉得应该能够将数据写入包含数据的现有文件中,而不需要将所有数据重新写入文件再添加新数据。
对于非常大的文件,仅需将现有数据写回文件,然后写入期望添加的新数据,这将变得越来越繁琐。
为了使问题易读,我已经将代码分解了,希望您不介意这个长问题。:)
编辑:
这对我起作用:
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+”用于读取和追加(在文件末尾写入)。如果文件不存在,则创建该文件。