ZetCode

Python write 函数

最后修改时间:2025 年 3 月 26 日

本综合指南将深入探讨 Python 的 write 函数,这是 Python 中写入文件的主要方法。我们将涵盖基本用法、文件模式、上下文管理器、编码处理和最佳实践。

基本定义

write 函数是 Python 中文件对象的一个方法,用于将数据写入文件。它接受一个字符串(或二进制模式下的字节)作为输入,并将其写入文件当前位置。

write 的关键特性:它不会自动添加换行符,返回写入的字符/字节数,并且可能会在调用 flushclose 之前缓冲输出。

基本文件写入

write 的最简单用法是将字符串写入以写入 ('w') 或追加 ('a') 模式打开的文件。写入模式会创建或覆盖文件。

basic_write.py
# Open a file for writing
file = open('output.txt', 'w')
file.write('Hello, Python!\n')
file.write('This is line two.\n')
file.close()

此示例创建 'output.txt'(如果存在则覆盖)并写入两行。请注意显式的 \n 换行符。close 调用确保所有数据都已写入磁盘。

write 方法返回写入的字符数(文本模式)或字节数(二进制模式)。这对于验证很有用。

写入多行

为了高效地写入多行,您可以使用 writelines 或通过 write 循环遍历字符串列表。

multi_line_write.py
# Writing multiple lines efficiently
lines = ['First line\n', 'Second line\n', 'Third line\n']

with open('multi.txt', 'w') as file:
    file.writelines(lines)
    # Or alternatively:
    # for line in lines:
    #     file.write(line)

此示例演示了两种写入多行的方法。writelines 方法一次写入所有行,而循环提供了更多控制。请注意,writelines 不会添加换行符。

with 语句确保文件正确关闭。这在写入文件时尤其重要,以确保所有数据都已刷新到磁盘。

追加到文件

要添加内容而不覆盖现有数据,请在追加 ('a') 模式下打开文件。write 操作将始终添加到末尾。

append_write.py
# Appending to an existing file
with open('log.txt', 'a') as file:
    file.write('New log entry at: ')
    file.write('2025-03-26 14:30:00\n')

此代码以追加模式打开 'log.txt' 并添加一个带时间戳的日志条目。如果文件不存在,则会创建它。每次运行都会追加新内容。

追加模式通常用于日志记录、数据收集或任何您需要保留历史数据同时添加新信息的场景。

二进制文件写入

对于非文本文件,请使用二进制模式 ('wb')。在此模式下,write 接受字节对象而不是字符串。

binary_write.py
# Writing binary data
data = bytes([0x48, 0x65, 0x6c, 0x6c, 0x6f])  # 'Hello' in ASCII

with open('binary.bin', 'wb') as file:
    bytes_written = file.write(data)
    print(f"Bytes written: {bytes_written}")

此示例创建一个二进制文件并写入表示 ASCII 'Hello' 的字节序列。write 方法返回写入的字节数,我们会打印出来进行验证。

二进制模式对于图像、可执行文件或任何需要逐字节精度的文件至关重要。文本模式会损坏此类文件。

写入时指定编码

写入文本文件时,您可以指定字符编码以确保正确处理非 ASCII 字符。

encoding_write.py
# Writing with specific encoding
text = "Résumé - 简历 - Lebenslauf"

with open('multilingual.txt', 'w', encoding='utf-8') as file:
    file.write(text)

此代码将包含多种语言的字符串写入 UTF-8 编码的文件。UTF-8 可以表示所有 Unicode 字符,并且在大多数情况下是文本文件的推荐编码。

如果您不指定编码,Python 会使用默认的系统编码,这可能无法正确处理所有字符。对于可移植代码,请始终指定编码。

最佳实践

资料来源

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年起一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 Python 教程