news 2026/4/24 23:14:03

Python 文件操作大全

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 文件操作大全

打开文件

在读写文件前需要先打开文件

open打开一个文件

1

2

3

4

5

6

7

8

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

关闭文件

文件在打开完之后,使用完之后,一定要关闭!
打开文件,其实是在申请一定的系统资源。不再使用文件的时候,资源就应该及时释放
否则就可能造成文件资源泄露,进一步导致其他部分的代码无法顺利打开文件了
正是因为一个系统的资源是有限的,因此一个程序能打开的文件个数也是有上限的

1

f.close()

文件打开的上限

1

2

3

4

5

6

7

8

# 文件打开的上限

FIle=[]

count=0

whileTrue:

f=open('d:/My Computer/text.txt')

first.append(f)

count+=1

print(f'打开文件的个数:{count}')

  • 在系统中,可以通过一些设置项,来配置能打开文件的最大数目
  • 但无论配置多少,都不是无穷无尽的,所以需要记得及时关闭文件,释放资源
  • 这里将文件对象放入数组File中,是为了避免产生垃圾回收
    • 垃圾回收(GC)是Python的一个重要机制,自动把不用的变量给释放掉
    • 如果不将每次打开的文件对象放入FIle中,那么前面打开的文件对象就会由于没有使用而被自动释放,最后导致文件在不关闭的情况下可以一直打开

写文件

使用r方式打开文件

1

2

3

4

# 使用 read 方式打开文件,再进行写操作

f=open('d:/My Computer/text.txt','r')

f.write('hello')

f.close()

文件会抛出异常

使用w的方式打开文件

1

2

3

4

5

6

7

8

# 使用 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的方式打开文件

1

2

3

4

5

6

7

# 使用 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
    在实际开发的时候,就需要保证,文件内容的编码方式和代码中操作文件的编码方式是匹配的,所以需要再打开文件的时候指定编码方式

按字符数量读取

1

2

3

4

5

6

7

8

9

# 按字符数量来读取

f=open('d:/My Computer/text.txt','r',encoding='utf8')

result=f.read(5)

print(result)

f.close()

"""

运行结果

床前明月光

"""

按行来读取

最简单的方法,就是直接使用for循环

1

2

3

4

5

6

7

8

9

10

11

12

# 按行读取

f=open('d:/My Computer/text.txt','r',encoding='utf8')

forlineinf:

print(f'line = {line}')

f.close()

"""

运行结果

line = 床前明月光

line = 疑是地上霜

line = 举头望明月

line = 低头思故乡

"""

  • 之所以多了空行,是因为本来读取到的文件内容(这一行内容,末尾就带有\n
  • 此处使用print打印,又会自动添加换行的行为
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 23:02:21

如何用Spek音频频谱分析器轻松掌握音频质量检测:新手终极指南

如何用Spek音频频谱分析器轻松掌握音频质量检测&#xff1a;新手终极指南 【免费下载链接】spek Acoustic spectrum analyser 项目地址: https://gitcode.com/gh_mirrors/sp/spek 想要快速了解音频文件的频谱特性吗&#xff1f;Spek音频频谱分析器就是你的得力助手&…

作者头像 李华
网站建设 2026/4/24 23:02:21

eRoad揭秘:从offer发放到第一天上班,那段「消失的管理空白」

一、「消失的候选人」&#xff1a;被忽视的入职管理黑洞你是否遇到过这样的情况&#xff1a;候选人明明已经接了offer&#xff0c;却在入职前一天突然「失联」&#xff0c;发来的消息只有一句&#xff1a;「不好意思&#xff0c;我决定去另一家公司了。」HR们往往将这种情况归咎…

作者头像 李华