Python将内容写入文件的五种实用方法详解

码头散步
码头散步
发布时间:2026-10-12 | 3人浏览过
原创

本文总结了Python中将内容写入文件的五种常用方法。详细解析了内置open()函数的参数配置,重点对比了write()与writelines()的区别及高级迭代器用法,介绍了利用print()函数重定向输出至文件的技术,并演示了使用csv和json模块处理结构化数据写入的标准实践,帮助开发者根据场景选择最优方案。

一、write()方法

通过调用 open() 函数获取文件对象,随后利用 write() 方法将指定内容写入文件。具体实现示例如下:

with open('example.txt', 'w') as f:
    f.write('Hello, world!')

open() 是 Python 内置的文件打开函数,其核心参数及含义说明如下:

1.file:指定文件名或文件路径。支持绝对路径或相对路径(相对于当前工作目录)。若省略路径参数,则默认在当前工作目录下创建或打开文件。

2.mode:定义文件打开模式,可选值包括:

  • 'r':只读模式。此为默认模式,若目标文件不存在则抛出异常。
  • 'w':写入模式。若文件不存在则自动创建;若文件已存在,则清空原有内容后写入新数据。
  • 'x':独占创建模式。若文件不存在则创建;若文件已存在,则抛出异常以防止覆盖。
  • 'a':追加模式。若文件不存在则创建;若文件已存在,则将新内容追加至文件末尾。
  • 'b':二进制模式。需与其他模式组合使用,例如 'rb' 或 'wb'。
  • 't':文本模式。需与其他模式组合使用,例如 'rt' 或 'wt'。

3.buffering:设置缓冲区大小。若省略或设为 0,则禁用缓冲;若设为 1,启用行缓冲;若大于 1,则指定缓冲区字节大小。

4.encoding:指定文件内容的编码格式。若省略,则使用系统默认编码。

5.errors:处理编码/解码错误的方式,可选值包括:

  • 'strict':默认值,遇到错误时抛出异常。
  • 'ignore':忽略编码错误。
  • 'replace':使用 '?' 替换无法解码的字符。
  • 'backslashreplace':使用反斜杠转义序列替换无法解码的字符。
  • 'xmlcharrefreplace':使用 XML 字符引用替换无法解码的字符。
  • 'namereplace':使用 \N{...} 转义序列替换无法解码的字符。

6.newline:控制文本模式下的换行符处理逻辑,可选值包括:

  • None:使用默认换行符 \n。
  • '':不进行任何换行符转换。
  • '\n', '\r', '\r\n', '\u2028', '\u2029':使用指定的换行符。

7.closefd:布尔值,若为 True(默认值),则在文件关闭时同时关闭底层文件描述符。

8.opener:用于自定义文件打开逻辑的函数或类,默认为 None。

上述参数可灵活组合以满足不同文件操作需求。例如,open('example.txt', 'w') 将以写入模式打开名为 example.txt 的文件,若该文件不存在则自动创建一个新的空文件。

二、writelines() 方法

writelines() 方法用于将字符串列表整体写入文件。具体示例如下:

with open('example.txt', 'w') as f:
    lines = ['Hello, world!', 'Welcome to Python']
    f.writelines(lines)

使用 writelines() 方法时需注意以下关键点:

  • writelines() 仅接受字符串列表作为参数。若需写入单个字符串,应使用 write() 方法。
  • writelines() 不会在字符串之间自动添加换行符,需手动在字符串末尾添加换行符。
  • writelines() 不会在列表末尾自动添加空行。若需在最后一行后添加空行,需手动在列表末尾追加一个包含换行符的空字符串。
  • 调用该方法时,必须确保传递的参数为字符串列表。若参数为生成器对象,需先将其转换为列表再传入。
lines = ['line 1\n', 'line 2\n', 'line 3\n']
 
with open('example.txt', 'w') as f:
    f.writelines(lines)

该方法的高级用法支持直接写入迭代器对象中的数据,无需一次性加载至内存。这种处理方式适用于大型数据集,通过逐个迭代元素写入文件,有效避免内存溢出。

def generate_lines():
    yield 'line 1\n'
    yield 'line 2\n'
    yield 'line 3\n'
 
with open('example.txt', 'w') as f:
    f.writelines(generate_lines())

在上述代码中,generate_lines() 函数返回一个迭代器,逐个生成字符串。将该迭代器直接传递给 writelines() 方法,即可实现逐行写入文件。

三、print() 函数

可通过指定 print() 函数的 file 参数为文件对象,将内容写入文件。具体示例如下:

with open('example.txt', 'w') as f:
    print('Hello, world!', file=f)

以下是 print() 函数的常用参数及其详细说明:

print() 是 Python 中用于向终端打印信息的内置函数。该函数支持接收多个参数,并将它们输出至终端。

以下是 print() 函数的常用参数及其详细说明:

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

  • *objects:一个或多个待打印对象,支持字符串、数字、变量等任意类型,可接收任意数量的参数。
  • sep:用于分隔多个参数的字符,默认为空格。在打印多个参数时,该参数作为参数间的分隔符。
  • end:表示打印输出结束的字符,默认为换行符。在打印最后一个参数后,该参数作为结尾字符。
  • file:指定输出目标文件对象,默认为标准输出设备 sys.stdout。通过重定向该参数,可将输出保存至文件而非终端。
  • flush:控制是否立即刷新缓冲区,默认为 False。若设为 True,输出将立即写入文件,无需等待缓冲区满。
# 打印输出单个字符串
print("Hello World")
 
# 打印输出多个参数
print("Name:", "John", "Age:", 25)
 
# 使用自定义分隔符
print("Name:", "John", "Age:", 25, sep="-")
 
# 使用自定义结束符
print("Name:", "John", "Age:", 25, end=".")
 
# 将输出重定向到文件
with open('output.txt', 'w') as f:
    print("Hello World", file=f)
 
# 立即刷新缓冲区
print("Hello World", flush=True)

print(string, *args, **kwargs)

  • string:格式化字符串,包含待打印信息及格式化占位符。占位符由花括号 {} 包裹,可指定数据类型、宽度及精度等信息。
  • *args:可选参数,包含填充到格式化字符串中的数据。
  • **kwargs:可选参数,包含键值对,用于指定格式化字符串中占位符的具体值。
name = "John"
age = 25
 
# 使用占位符输出字符串
print("Name: {}, Age: {}".format(name, age))
 
# 使用关键字参数输出字符串
print("Name: {n}, Age: {a}".format(n=name, a=age))
 
# 使用 f-string 输出字符串
print(f"Name: {name}, Age: {age}")

四、使用 csv 模块

利用 csv 模块可将数据写入 CSV 文件。具体示例如下:

import csv
 
with open('example.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['Name', 'Age', 'Gender'])
    writer.writerow(['Alice', 25, 'F'])
    writer.writerow(['Bob', 30, 'M'])

五、使用 json 模块

利用 json 模块可将 Python 对象序列化为 JSON 格式并写入文件。具体示例如下:

import json
 
data = {
    'name': 'Alice',
    'age': 25,
    'gender': 'F'
}
 
with open('example.json', 'w') as f:
    json.dump(data, f)

至此,关于 Python 实现将内容写入文件的五种方法总结完毕。如需了解更多 Python 文件写入相关内容,请搜索本站历史文章或浏览后续相关文章,感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表