Python write 函数
最后修改时间:2025 年 3 月 26 日
本综合指南将深入探讨 Python 的 write 函数,这是 Python 中写入文件的主要方法。我们将涵盖基本用法、文件模式、上下文管理器、编码处理和最佳实践。
基本定义
write 函数是 Python 中文件对象的一个方法,用于将数据写入文件。它接受一个字符串(或二进制模式下的字节)作为输入,并将其写入文件当前位置。
write 的关键特性:它不会自动添加换行符,返回写入的字符/字节数,并且可能会在调用 flush 或 close 之前缓冲输出。
基本文件写入
write 的最简单用法是将字符串写入以写入 ('w') 或追加 ('a') 模式打开的文件。写入模式会创建或覆盖文件。
# 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 循环遍历字符串列表。
# 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 操作将始终添加到末尾。
# 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 接受字节对象而不是字符串。
# 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 字符。
# 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 会使用默认的系统编码,这可能无法正确处理所有字符。对于可移植代码,请始终指定编码。
最佳实践
- 使用上下文管理器: 在文件处理中始终优先使用
with语句 - 显式换行符: 记住在需要时添加
\n - 指定编码: 始终为文本文件声明编码
- 检查返回值: 在可靠性至关重要时,验证写入的字节/字符数
- 需要时刷新: 使用
flush()确保立即写入
资料来源
作者
列出所有 Python 教程。