Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)

文件操作概述

  1. 文件操作主要是文件读写操作,即文件的读取和写入操作

  2. 文件操作 3 步走:打开文件 -> 读写文件 -> 关闭文件


一、打开与关闭文件

1、基本介绍
  1. 使用 open 函数,打开一个已存在的文件,或创建一个新文件
python 复制代码
【文件对象】 = open(【文件路径】, 【访问模式】)
  1. 使用 close 函数,关闭打开的文件

    【文件对象】.close()

2、访问模式
访问模式 说明
r 打开一个文件用于只读(默认访问模式)
w 打开一个文件用于写入 如果文件该已存在,则打开文件并从开头开始写入,且原有内容会被删除 如果该文件不存在,则创建新文件进行写入
a 打开一个文件用于追加 如果该文件已存在,则新的内容将会被写入到原有内容之后 如果该文件不存在,则创建新文件进行写入
3、演示
  1. 创建并编辑 test.txt 文件用于测试

    Hello World
    Hello Python

  2. 测试代码

python 复制代码
f = open("D:/pythonTestFile/test.txt", "r")

print(f)
print(type(f))

f.close()
复制代码
# 输出结果

<_io.TextIOWrapper name='D:/pythonTestFile/test.txt' mode='r' encoding='cp936'>
<class '_io.TextIOWrapper'>

二、读取文件

1、基本介绍
编号 方法 说明
1 【文件对象】.read(【长度】) 读取指定长度的字节 如果没有指定长度,那么就表示读取文件中所有的数据
2 【文件对象】.readline() 一次读取一行数据
3 【文件对象】.readlines() 按照行的方式把整个文件中的数据进行一次性读取 返回一个列表,其中每一行的数据为一个元素
2、演示
  • 创建并编辑 readTest.txt 文件用于测试

    Hello World 1
    Hello World 2
    Hello World 3
    Hello World 4
    Hello World 5

  1. read 方法
python 复制代码
f = open("D:/pythonTestFile/readTest.txt", "r")

result1 = f.read(10)
result2 = f.read(10)
resultAll = f.read()

print(f"第 1 次读取 10 个字节:{result1}")
print(type(result1))
print(f"第 2 次读取 10 个字节:{result2}")
print(type(result2))
print(f"读取剩下的全部内容:{resultAll}")
print(type(resultAll))

f.close()
复制代码
# 输出结果

第 1 次读取 10 个字节:Hello Worl
<class 'str'>
第 2 次读取 10 个字节:d 1
Hello 
<class 'str'>
读取剩下的全部内容:World 2
Hello World 3
Hello World 4
Hello World 5
<class 'str'>
  1. readline 方法
python 复制代码
f = open("D:/pythonTestFile/readTest.txt", "r")

line1 = f.readline()
line2 = f.readline()

print(line1)
print(type(line1))
print(line2)
print(type(line1))

f.close()
复制代码
# 输出结果

Hello World 1

<class 'str'>
Hello World 2

<class 'str'>
  1. readlines 方法
python 复制代码
f = open("D:/pythonTestFile/readTest.txt", "r")

lines = f.readlines()

print(lines)
print(type(lines))

f.close()
复制代码
# 输出结果

['Hello World 1\n', 'Hello World 2\n', 'Hello World 3\n', 'Hello World 4\n', 'Hello World 5']
<class 'list'>

三、其他方式读取文件

1、for 语句读取
(1)基本介绍
python 复制代码
for 【临时变量】 in 【文件对象】: 
    【执行的代码块】
(2)演示
python 复制代码
f = open("D:/pythonTestFile/readTest.txt", "r")

for line in f:
    print(line)

f.close()
复制代码
# 输出结果

Hello World 1

Hello World 2

Hello World 3

Hello World 4

Hello World 5
2、with 语句读取
(1)基本使用
复制代码
with open(【文件路径】, 【访问模式】) as 【文件对象】:
    【执行的代码块】
  • 注:使用 with 语句打开的文件,可以自动关闭
(2)演示
python 复制代码
f = open("D:/pythonTestFile/readTest.txt", "r")

with open("D:/pythonTestFile/readTest.txt", "r") as f:
    for line in f:
        print(line)
复制代码
# 输出结果

Hello World 1

Hello World 2

Hello World 3

Hello World 4

Hello World 5

四、文件写入

1、基本介绍
  1. 使用 w 访问模式打开文件
python 复制代码
【文件对象】 = open(【文件路径】, "w")
  1. 使用 write 函数,向文件内写入内容
python 复制代码
【文件对象】.write(【内容】)
  1. 使用 write 函数写入的内容会先存储在缓冲区,使用 flush 函数,才能向文件内真正写入内容
python 复制代码
【文件对象】.flush()
  • 注:close 函数自带 flush 函数的功能
2、演示
  1. 创建并编辑 writeTest.txt 文件用于测试

    Hello World 1
    Hello World 2
    Hello World 3

  2. 测试代码

python 复制代码
f = open("D:/pythonTestFile/writeTest.txt", "w")

f.write("Hello Python")
f.write("\n")
f.write("Hello Python")

f.flush()

f.close()
  1. 此时的 writeTest.txt 文件

    Hello Python
    Hello Python


五、文件追加

1、基本介绍
  1. 使用 a 访问模式打开文件
python 复制代码
【文件对象】 = open(【文件路径】, "a")
  1. 使用 write 函数,向文件内追加内容
python 复制代码
【文件对象】.write(【内容】)
  1. 使用 write 函数追加的内容会先存储在缓冲区,使用 flush 函数,才能向文件内真正追加内容
python 复制代码
【文件对象】.flush()
  • 注:close 函数自带 flush 函数的功能
2、演示
  1. 创建并编辑 appendTest.txt 文件用于测试

    Hello World 1
    Hello World 2
    Hello World 3

  2. 测试代码

python 复制代码
f = open("D:/pythonTestFile/appendTest.txt", "a")

f.write("\n")
f.write("Hello Python")
f.write("\n")
f.write("Hello Python")

f.flush()

f.close()
  1. 此时的 appendTest.txt 文件

    Hello World 1
    Hello World 2
    Hello World 3
    Hello Python
    Hello Python

相关推荐
青少儿编程课堂1 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛
冻柠檬飞冰走茶1 小时前
PTA刷题集之Battle Over Cities - Hard Version(C语言实现)
c语言·开发语言·数据结构·算法
修炼的dance1 小时前
批量转码前用 ffprobe 筛一遍,36 个文件能跳过 26 个
前端
费曼学习法1 小时前
从 0 到 1 上手 Super-Agent 架构:任务拆解、工具路由与失败回滚的三段实现
前端
2026小鱼AI1 小时前
当 LLM 生成的教学设计“不合格”:结构化校验、局部重生成与并发下的质量漂移
前端
疯华整猫1 小时前
借助 Trae 复刻百度网盘“无权限摇一摇”检测:Android 传感器 AI 辅助实战
前端
deli0071 小时前
流式输出为什么一段一段蹦?拆开 SSE 分块实测 20094 个乱码
前端
SelectDB1 小时前
Apache Doris 与 SelectDB 是什么关系?从开源技术到面向 Agent 的极速分析数据库
大数据·数据库·数据分析
不一样的少年_1 小时前
为什么你写的 Agent 一报错就死循环?很多人都漏掉了这层“错误自救与熔断”机制
前端·后端·agent