亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

Python 文件 I/O:掌握文件操作、读写与管理

Python 文件 I/O

通过清晰示例与最佳实践,学习在 Python 中打开、读取、写入和关闭文件。

视频:Python 读写文件

文件

文件是磁盘上存储数据的命名位置。因 RAM 易失性,我们依赖文件在程序执行间保持信息。

与文件交互的典型顺序是:打开 → 读/写 → 关闭。


在 Python 中打开文件

Python 内置 open() 函数返回文件对象,用于执行 I/O 操作。函数签名:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

关键点:

模式描述
r读取(默认)
w写入;创建新或截断现有
x独占创建;文件存在则失败
a追加;不存在则创建
t文本模式(默认)
b二进制模式
+读写
f = open("test.txt")  # r/rt
f = open("test.txt", "w")  # 写入
f = open("img.bmp", "r+b")  # 读写二进制

因 a 是字符,除非编码否则不等于数字 97。文本文件显式设置 encoding='utf-8'。

f = open("test.txt", mode='r', encoding='utf-8')

在 Python 中关闭文件

正确关闭文件释放系统资源。close() 方法简单,但上下文管理器是最安全模式。

with open("test.txt", encoding='utf-8') as f:
    # 执行文件操作
    pass

上下文管理器保证即使发生异常也会关闭。手动打开文件时,用 try...finally 包装。

try:
    f = open("test.txt", encoding='utf-8')
    # 操作
finally:
    f.close()

在 Python 中写入文件

用 w、a 或 x 模式写入。w 覆盖现有内容;a 保留。

write() 方法接受字符串(二进制模式接受 bytes)并返回写入字符数。

with open("test.txt", "w", encoding='utf-8') as f:
    f.write("my first file\n")
    f.write("This file\n\n")
    f.write("contains three lines\n")

记得包含换行符分隔行。


在 Python 中读取文件

用 r 模式打开。read() 方法接受可选 size 参数;省略则读至 EOF。

f = open("test.txt", "r", encoding='utf-8')
print(f.read(4))  # 'This'
print(f.read(4))  # ' is '
print(f.read())   # 剩余内容
f.close()

用 seek() 移动光标,tell() 查询位置:

print(f.tell())  # 当前位置
f.seek(0)        # 回到开头
print(f.read())  # 全部读取

高效逐行迭代:

for line in f:
    print(line, end='')

也可用 readline() 和 readlines() 逐行访问。


Python 文件方法

下表是文本模式下最常用文件方法的简明参考。

方法描述
close()关闭文件
detach()分离底层二进制缓冲区
fileno()返回文件描述符
flush()刷新写入缓冲区
isatty()检查流是否交互式
read(n)读取最多 n 字符;None 读至 EOF
readable()流是否可读
readline(n=-1)读取单行,最多 n 字符
readlines(n=-1)返回行列表,最多 n 字符
seek(offset, from_=SEEK_SET)将光标移至 offset 相对 from_(开始、当前、末尾)
seekable()流是否支持随机访问
tell()获取当前光标位置
truncate(size=None)将文件调整至 size 字节
writable()流是否可写
write(s)写入字符串 s;返回写入字符数
writelines(lines)写入字符串可迭代对象

Python

  1. C 语言输入输出(I/O)精通:scanf() 与 printf() 详解
  2. C 语言文件 I/O 实战:创建、打开、读写与二进制操作
  3. C# 文件 I/O 完全指南:流、读写操作与文件系统管理
  4. 精通Python数据类型:实战指南
  5. 精通Python运算符:全面指南
  6. Python 列表操作:创建、访问、修改与进阶技巧
  7. 精通 Python 元组:创建、访问与进阶操作
  8. 精通 Python 字典:创建、操作与进阶技巧
  9. Python 文件 I/O:掌握文件操作、读写与管理
  10. Python 检查文件与目录是否存在:实战指南
  11. Python JSON:编码、解码与文件处理实战指南
  12. Python 文件 I/O:掌握输入输出操作