写入文件

保存数据的最简单方法之一是将其写入文件。 当您将文本写入文件时,在您关闭包含程序输出的终端后,输出仍然可用。 您可以在程序运行完毕后检查输出,也可以与其他人共享输出文件。 您还可以编写程序将文本读回内存并稍后再次使用它。

写入一行

一旦定义了路径,就可以使用 write_text() 方法写入文件。 要了解它是如何工作的,让我们编写一条简单的消息并将其存储在一个文件中,而不是将其打印到屏幕上:

from pathlib import Path


path = Path('programming.txt')
path.write_text("I love programming.")

write_text() 方法只有一个参数:要写入文件的字符串。 这个程序没有终端输出,但是如果你打开文件 programming.txt,你会看到一行:

programming.txt
I love programming.

该文件的行为与您计算机上的任何其他文件一样。 您可以打开它、在其中写入新文本、从中复制、粘贴等等。

Python 只能将字符串写入文本文件。 如果要将数值数据存储在文本文件中,则必须先使用 str() 函数将数据转换为字符串格式。

写入多行

write_text() 方法在幕后做了一些事情。 如果该路径指向的文件不存在,它会创建该文件。 此外,将字符串写入文件后,它会确保文件已正确关闭。 未正确关闭的文件可能会导致数据丢失或损坏。

要向文件写入多行,您需要构建一个包含文件全部内容的字符串,然后使用该字符串调用 write_text()。 让我们在 programming.txt 文件中写入几行:

from pathlib import Path


contents = "I love programming.\n"
contents += "I love creating new games.\n"
contents += "I also love working with data.\n"

path = Path('programming.txt')
path.write_text(contents)

我们定义了一个名为 contents 的变量,它将保存文件的全部内容。 在下一行,我们使用 += 运算符添加到该字符串。 您可以根据需要多次执行此操作,以构建任意长度的字符串。 在这种情况下,我们在每行的末尾包含换行符,以确保每个语句出现在自己的行中。

如果你运行它然后打开 programming.txt,你会在文本文件中看到每一行:

I love programming.
I love creating new games.
I also love working with data.

您还可以使用空格、制表符和空行来格式化您的输出,就像您对基于终端的输出所做的那样。 字符串的长度没有限制,这是创建了多少计算机生成的文档。

在路径对象上调用 write_text() 时要小心。 如果文件已经存在,write_text() 将擦除文件的当前内容并将新内容写入文件。 在本章后面,您将学习使用 pathlib 检查文件是否存在。

自己试试
10-4.Guest

编写一个程序,提示用户输入他们的名字。 当他们回应时,将他们的名字写入一个名为 guest.txt 的文件。

10-5.Guest Book

编写一个 while 循环,提示用户输入他们的姓名。 收集所有输入的姓名,然后将这些姓名写入名为 guest_book.txt 的文件。 确保每个条目出现在文件中的新行中。