目标:
我有一个名为 airplanes.txt
的文件。它已经包含了一些我最喜欢的飞机:
Boeing 747
Airbus A380
我正在我的主应用程序中进行输入,以便将用户声明的飞机添加到此 airplanes.txt
文件中。
例子:
请输入您要添加到收藏夹列表的飞机名称:
<
如果您现在查看 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+
打开以进行读取和追加(在文件末尾写入)。如果文件不存在,则创建该文件。
最佳答案
您可以以不同的模式打开文件,即读取文件、写入文件或追加文件。这是通过第二个参数“r”、“w”、“a”完成的,对于“字节模式”可选择“+”或“b”。此外,使用 with open(...)
代替。
也就是说,您可以使用:
with open("test.txt", "a+") as file:
file.write("\nBoeing 737")
关于python - 写入文件的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63208036/