Python 文件操作大全

 更新时间:2019年09月17日 09:05:16   作者:椰椰椰耶  
这篇文章主要介绍了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

到此这篇关于Python 文件操作大全的文章就介绍到这了,更多相关Python 文件操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 并行加速技巧分享

    Python 并行加速技巧分享

    这篇文章主要介绍了Python 并行加速技巧分享,文章围绕文章主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • 解析ROC曲线绘制(python+sklearn+多分类)

    解析ROC曲线绘制(python+sklearn+多分类)

    这篇文章主要介绍了解析ROC曲线绘制(python+sklearn+多分类),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Python socket聊天脚本代码实例

    Python socket聊天脚本代码实例

    这篇文章主要介绍了Python socket聊天脚本代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python数据可视化详解

    Python数据可视化详解

    数据可视化是一种将庞杂抽象的数据转化为直观易懂的图形的数据呈现技术,它能帮助我们快速把握数据的分布和规律,更加轻松地理解和探索信息,本文通过代码图片详细介绍了Python数据可视化,感兴趣的小伙伴可以参考阅读
    2023-04-04
  • matplotlib 输出保存指定尺寸的图片方法

    matplotlib 输出保存指定尺寸的图片方法

    今天小编就为大家分享一篇matplotlib 输出保存指定尺寸的图片方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python实现连通域标记算法

    Python实现连通域标记算法

    如果把图像分为前景和背景两部分,那么连通域就是连通在一起的前景,这种关系对于二值图像来说比较明显,下面我们就来了解一下连通域标记算法原理及其Python实现吧
    2023-12-12
  • python使用selenium操作浏览器的实现示例

    python使用selenium操作浏览器的实现示例

    Selenium是一个模拟浏览器浏览网页的工具,主要用于测试网站的自动化测试工具,本文主要介绍了python使用selenium操作浏览器的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Python 中如何使用 virtualenv 管理虚拟环境

    Python 中如何使用 virtualenv 管理虚拟环境

    这篇文章主要介绍了Python 中使用 virtualenv 管理虚拟环境的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • Python pyecharts绘制柱状图

    Python pyecharts绘制柱状图

    这篇文章主要介绍了Python pyecharts绘制柱状图,文章介绍的柱状/条形图,通过柱形的高度/条形的宽度来表现数据的大小,感兴趣的小伙伴一起进入文章学习更详细内容吧
    2021-12-12
  • Python集合的增删改查操作

    Python集合的增删改查操作

    这篇文章主要介绍了Python集合的增删改查操作,其增删改查操作要看集合的类型来决定,不可变的数据当然不能增删改,只能查询,可变集合则限制稍微少点。下面和小编一起进放入文章了解更多相关内容吧
    2022-03-03

最新评论