首页 > Python资料 博客日记
【Python】文件操作
2024-09-09 21:00:05Python资料围观89次
文章【Python】文件操作分享给大家,欢迎收藏Python资料网,专注分享技术知识
打开文件
在读写文件前需要先打开文件
用 open
打开一个文件
f = open('d:/MyComputer/text.txt','r')
print(f)
print(type(f))
"""
运行结果
<_io.TextIOWrapper name='d:/My Computer/text.txt' mode='r' encoding='cp936'>
<class '_io.TextIOWrapper'>
"""
- 前面一个参数是指:需要打开哪个文件
- 后面一个参数是指:打开方式
r
:read
,按照读方式打开w
:write
,按照写方式打开a
:append
,按照写方式打开,把内容写到原有文件内容的末尾
open
的返回值是一个文件对象,f
相当于是file
的缩写
- 文件的内容,是在硬盘上的
- 此处的文件对象,则是内存上的一个变量
- 后续读写文件操作,都是拿着这个文件对象来进行操作的
此处的文件对象就像一个“遥控器”一样,计算机中,也把这样的远程操控的“遥控器”称为“句柄”(handler
)
关闭文件
文件在打开完之后,使用完之后,一定要关闭!
打开文件,其实是在申请一定的系统资源。不再使用文件的时候,资源就应该及时释放
否则就可能造成文件资源泄露,进一步导致其他部分的代码无法顺利打开文件了
正是因为一个系统的资源是有限的,因此一个程序能打开的文件个数也是有上限的
f.close()
文件打开的上限
# 文件打开的上限
FIle = []
count = 0
while True:
f = open('d:/My Computer/text.txt')
first.append(f)
count += 1
print(f'打开文件的个数:{count}')
- 在系统中,可以通过一些设置项,来配置能打开文件的最大数目
- 但无论配置多少,都不是无穷无尽的,所以需要记得及时关闭文件,释放资源
- 这里将文件对象放入数组
File
中,是为了避免产生垃圾回收- 垃圾回收(
GC
)是Python
的一个重要机制,自动把不用的变量给释放掉 - 如果不将每次打开的文件对象放入
FIle
中,那么前面打开的文件对象就会由于没有使用而被自动释放,最后导致文件在不关闭的情况下可以一直打开
- 垃圾回收(
写文件
使用 r
方式打开文件
# 使用 read 方式打开文件,再进行写操作
f = open('d:/My Computer/text.txt','r')
f.write('hello')
f.close()
- 文件会抛出异常
使用 w
的方式打开文件
# 使用 write 来实现写文件的操作
# 使用 read 方式打开文件,再进行写操作
f = open('d:/My Computer/text.txt','w')
f.write('hello')
f.close()
f = open('d:/My Computer/text.txt','w')
f.write('world')
f.close()
- 最后所打开的文件中写入了‘
world
’ - 如果使用
w
打开文件之后,会清空原文件中的内容,再进行后续写操作
使用 a
的方式打开文件
# 使用 read 方式打开文件,再进行写操作
f = open('d:/My Computer/text.txt','w')
f.write('hello')
f.close()
f = open('d:/My Computer/text.txt','a')
f.write('world')
f.close()
- 此时原有内容不变,写入的内容会存在于之前文件内容的末尾(追加写)
读文件
中文和英文类似,在计算机中,都是使用“数字”来表示字符的。但具体是那个数字对应哪个汉字是有多个版本的,主流的是:
GBK
UTF8
在实际开发的时候,就需要保证,文件内容的编码方式和代码中操作文件的编码方式是匹配的,所以需要再打开文件的时候指定编码方式
按字符数量读取
# 按字符数量来读取
f = open('d:/My Computer/text.txt','r',encoding='utf8')
result = f.read(5)
print(result)
f.close()
"""
运行结果
床前明月光
"""
按行来读取
最简单的方法,就是直接使用 for
循环
# 按行读取
f = open('d:/My Computer/text.txt','r',encoding='utf8')
for line in f:
print(f'line = {line}')
f.close()
"""
运行结果
line = 床前明月光
line = 疑是地上霜
line = 举头望明月
line = 低头思故乡
"""
- 之所以多了空行,是因为本来读取到的文件内容(这一行内容,末尾就带有
\n
) - 此处使用
print
打印,又会自动添加换行的行为 - 可以给
print
再多设定个参数,修改print
的自动换行行为
# 按行读取
f = open('d:/My Computer/text.txt','r',encoding='utf8')
for line in f:
print(f'line = {line}', end = '')
f.close()
"""
运行结果
line = 床前明月光
line = 疑是地上霜
line = 举头望明月
line = 低头思故乡
"""
end
参数就是表示每次打印之后要在末尾加个啥- 默认是
\n
- 修改成‘ ’,也就是什么都不加
- 默认是
直接读取全部内容
使用 readlines
的方法,直接把整个文件所有的内容都读出来,并且按照行组织到一个列表中
# 直接读完所有内容,并且按行进行组织
f = open('d:/My Computer/text.txt', 'r', encoding='utf8')
lines = f.readlines()
print(lines)
f.close()
"""
运行结果
['床前明月光\n', '疑是地上霜\n', '举头望明月\n', '低头思故乡']
"""
- 一次全部读完更省时间
上下文管理器
打开文件之后, 是容易忘记关闭的,Python
提供了上下文管理器,来帮助程序猿自动关闭文件
- 使用
with
语句打开文件 - 当
with
内部的代码块执行完毕后,就会自动调用关闭方法
with open('d:/My Computer/text.txt','r',encoding='utf8') as f:
# 进行文件处理的逻辑
- 上下文管理器起到的效果
- 当
with
对应的代码块执行结束后,就会自动执行f
的close
- 将
close
委托给了with
来执行,就不用担心自己忘记close
了
- 当
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj