【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'>
"""
  • 前面一个参数是指:需要打开哪个文件
  • 后面一个参数是指:打开方式
  • rread,按照读方式打开
  • wwrite,按照写方式打开
  • aappend,按照写方式打开,把内容写到原有文件内容的末尾
  • 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 对应的代码块执行结束后,就会自动执行 fclose
  • close 委托给了 with 来执行,就不用担心自己忘记 close


相关文章
|
4月前
|
安全 Python
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
212 72
|
4月前
|
移动开发 安全 Linux
Python文件操作的"保险箱":with语句深度实战指南
本文深入解析Python中`with`语句的原理与高级应用,通过“保险箱”类比,形象展示资源管理机制。从上下文管理协议到实战场景,涵盖文件、数据库、网络等多种资源的高效安全处理方式,助你写出更优雅、可靠的代码。
124 1
|
5月前
|
缓存 数据库连接 数据库
Python文件操作的“保险箱”:with语句深度实战指南
本文深入探讨Python中with语句在文件操作中的应用及其优势。首先介绍其底层原理,基于上下文管理协议自动管理资源的获取与释放,避免手动关闭文件导致的资源泄漏问题。接着通过基础文件读写、异常处理进阶和复合资源管理等实战场景解析with语句的便捷性与安全性。同时,阐述如何自定义上下文管理器以满足特定需求,并分析其性能考量及优化策略。最后总结实战经验,强调优先使用内置管理器、明确异常处理以及保持代码可读性的重要性,助力开发者高效编写健壮的程序。
115 1
|
5月前
|
自然语言处理 安全 JavaScript
Python文件操作的“保险箱”:with语句深度实战指南
Python中的`with`语句是文件操作和资源管理的强大工具,如同一个智能保险箱,自动处理打开和关闭操作,避免手动管理可能引发的错误。它通过上下文管理协议(`__enter__`和`__exit__`方法)确保资源在使用后正确释放。无论是逐块读取大文件、同时读写文件,还是处理特殊编码文件,`with`语句都能简化代码并提高安全性。此外,自定义上下文管理器可扩展到数据库连接等场景,而常见错误如重复关闭文件或忽略异常也需注意。结合生成器表达式批量处理文件时,`with`语句仍能保持高效和安全。总之,`with`语句是资源管理的瑞士军刀,让复杂操作变得简单可靠。
134 1
|
5月前
|
数据采集 运维 BI
Python 文件操作进阶|使用 shutil 实现高效文件复制
在开发和运维中,处理大量文件是常见需求,如备份配置、归档日志或构建部署包。手动复制粘贴已无法满足高效需求!Python 的 `shutil` 模块提供了强大的文件操作功能,支持单文件复制、目录树迁移及自动化任务构建。本文详解 `shutil.copy()` 基础用法与进阶技巧,如批量复制、自动路径检测、时间戳命名备份等,助你实现高效自动化。结合实战案例(如自动备份系统),让你的代码更专业!学习后,欢迎交流心得,一起精进 Python 技能。关注我,获取更多编程技巧与源码分享!
|
监控 Java 数据处理
文件操作不再难!Python系统编程实战,带你轻松驾驭文件系统与I/O
【7月更文挑战第31天】在 Python 系统编程中, 文件操作与 I/O 管理至关重要。
160 2
|
存储 Python
Python文件操作(1)
【10月更文挑战第17天】
210 60
Python文件操作(1)
|
数据采集 存储 Python
Python文件操作2
【10月更文挑战第18天】
95 2
Python文件操作2
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
137 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
|
存储 Python
Python文件操作
Python文件操作

推荐镜像

更多