Skip to content

文件写入:将数据保存到硬盘

在 Python 中,文件写入是程序与外部世界交互的重要方式。它可以让你将程序运行的结果、用户的输入等数据保存到硬盘上的文件中,以便后续使用。本文将带你了解 Python 中文件写入的基本知识和常用方法。

以下文件打开模式支持写入操作:

  • 从文件开头写入: r+, r+b, w, x, wb, w+, w+b。 这些模式会覆盖文件中已存在的内容(w)或者允许读写(r+)。
  • 在现有文件末尾追加: a, ab, a+, a+b。 这些模式会在文件末尾添加新的内容,而不会影响原有内容。

其中:

  • r: 读模式
  • w: 写模式
  • a: 追加模式
  • b: 二进制模式 (用于处理非文本文件,如图片、音频等)
  • +: 读写模式 (可以同时进行读和写操作)
  • x: 创建并写入模式 (如果文件已存在,则操作会失败)

接下来,我们将学习如何使用 Python 将数据写入文件。

write() 方法:写入字符串

write(s) 方法用于将字符串 s 写入文件。它会返回写入的字符数(文本模式)或字节数(二进制模式)。

示例:

python
>>> s = "你好 世界\n谢谢"
>>> with open("info_out.txt", "w", encoding='utf-8') as f:
...     num_chars = f.write(s)
...     print(num_chars) # 打印写入的字符数
...
8 # '你好 世界\n谢谢' 共 8 个字符
>>>

代码解释:

  1. s = "你好 世界\n谢谢": 定义一个包含中文和换行符的字符串。
  2. with open("info_out.txt", "w", encoding='utf-8') as f:: 使用 with open() 语句打开文件 "info_out.txt" 以进行写入操作 ("w" 模式)。encoding='utf-8' 指定使用 UTF-8 编码,以支持中文等 Unicode 字符。as f 将文件对象赋值给变量 f,方便后续操作。 使用 with 语句可以确保文件在使用完毕后自动关闭,避免资源泄露。
  3. num_chars = f.write(s): 调用 f.write(s) 将字符串 s 写入文件。write() 方法返回写入的字符数,并将其赋值给变量 num_chars
  4. print(num_chars): 打印写入的字符数。

现在,使用文本编辑器打开 info_out.txt,你将会看到以下内容:

你好 世界
谢谢

writelines() 方法:写入字符串列表

writelines(lines) 方法用于将字符串列表 lines 写入文件。与 write() 方法不同,writelines() 方法不会自动添加行分隔符(换行符 \n),因此你需要确保每个字符串的末尾包含换行符,如果需要换行的话。

示例:

python
>>> lines = ["你好 世界\n",
...          "谢谢\n"]
>>> with open("info_out.txt", "w", encoding='utf-8') as f:
...     f.writelines(lines)
...
>>>

代码解释:

  1. lines = ["你好 世界\n", "谢谢\n"]: 定义一个包含两个字符串的列表,每个字符串都以换行符结尾。
  2. with open("info_out.txt", "w", encoding='utf-8') as f:: 使用 with open() 语句打开文件 "info_out.txt" 以进行写入操作 ("w" 模式)。
  3. f.writelines(lines): 调用 f.writelines(lines) 将字符串列表 lines 写入文件。

现在,使用文本编辑器打开 info_out.txt,你将会看到以下内容:

你好 世界
谢谢

请注意,文件末尾多了一个空行,这是因为列表中的最后一个字符串 "谢谢\n" 也包含一个换行符。