本篇我们介绍如何将内容写入文本文件。

快速参考

以下代码演示了如何将一个字符串写入文本文件:

with open('readme.txt', 'w') as f:
    f.write('readme')

写入文本文件的步骤

在 Python 中写入文本文件的步骤如下:

  • 首先,利用 open() 函数以写入或者追加模式打开一个文本文件。
  • 其次,使用文件对象的 write() 或者 writelines() 方法写入文本。
  • 最后,使用文件对象的 close() 方法关闭文件。

以下是 open() 函数的基本语法:

f = open(path_to_file, mode)

open() 函数支持多个参数,主要的参数包含两个:

  • path_to_file 参数指定了文本文件的路径。
  • mode 参数用于指定打开文件的模式。

对于写入操作,我们可以使用以下模式:

模式

描述

‘w’

以写入模式打开文本文件

‘a’

以追加模式打开文本文件

open() 函数返回了一个文件对象,文件对象支持两种写入文件的方法:write() 和 writelines()。

write() 方法可以将一个字符串写入文本文件,writelines() 方法可以一次写入一个字符串列表。事实上,writelines() 方法支持一个可遍历对象作为参数,而不仅仅是字符串列表。因此我们可以传入一个字符串元组、字符串集合等。

以下代码可以用于写入一个换行符:

f.write('\n')
f.writelines('\n')

示例

以下示例说明了如何使用 write() 函数将一组文本写入文件:

lines = ['Readme', 'How to write text files in Python']
with open('readme.txt', 'w') as f:
    for line in lines:
        f.write(line)
        f.write('\n')

如果 readme.txt 文件不存在,open() 函数将会创建一个新文件。

python 写文本文件 python 写入文本文件_文本文件

以下示例演示了如何使用 writelines() 函数将一个字符串列表写入文件:

lines = ['Readme', 'How to write text files in Python']
with open('readme.txt', 'w') as f:
    f.writelines(lines)

如果想要将列表的每个元素作为一行写入,需要连接一个换行符:

lines = ['Readme', 'How to write text files in Python']
with open('readme.txt', 'w') as f:
    f.write('\n'.join(lines))

python 写文本文件 python 写入文本文件_文本文件_02

追加文件内容

如果想要将内容追加到文本文件中,需要以追加模式打开文件。以下示例在 readme.txt 文件中增加了一些新的内容:

more_lines = ['', 'Append text files', 'The End']
with open('readme.txt', 'a') as f:
    f.writelines('\n'.join(more_lines))

Code language: JavaScript (javascript)

Output:

python 写文本文件 python 写入文本文件_python 写文本文件_03

写入 UTF-8 编码文件

如果我们在前面的示例中写入 UTF-8 编码字符,将会返回以下错误:

UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-44: character maps to <undefined>

如果想要打开文件并写入 UTF-8 字符,需要为 open() 函数指定 encoding=‘utf-8’ 参数。例如:

quote = '春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。'

with open('quotes.txt', 'w', encoding='utf-8') as f:
    f.write(quote)

总结

  • 使用 open() 函数和 ‘w’(‘a’)参数以写入(追加)模式打开文本文件。
  • 写入文件之后使用 close() 方法关闭文件,或者使用 with 语句自动关闭文件。
  • 使用 write() 和 writelines() 方法写入内容。
  • 使用 encoding=‘utf-8’ 参数打开文件并写入 UTF-8 编码字符。