Python中文件的open,close,read,write等操作

Python中文件的open,close,read,write等操作

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_26442553/article/details/81626442

      Python既然作为开发语言,肯定不可避免要操作外部文件,比如读取外部文件然后进行计算,比如将运算的结果存储到本地文件。下面演示python常用的操作文件的方法。

在 Python 中要操作文件需要记住 1 个函数和 3 个方法

序号函数/方法说明
01open打开文件,并且返回文件操作对象
02read将文件内容读取到内存
03write将指定内容写入文件
04close关闭文件
  • open 函数负责打开文件,并且返回文件对象
  • read/write/close 三个方法都需要通过 文件对象 来调用

1.新建(打开)文件和关闭文件

1.1在python,使用open函数,可以打开一个已经存在的文件,或者如果该文件不存在,则会创建一个新文件。

格式如下:open("文件名",访问模式) ,默认的创建的目录在当前程序所在的目录

fo=open("myfile.doc",'w') #该文件不存在,则在当前目录创建该文件,如下图:

常用的访问模式用法:

温馨提示:频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读、只写 的方式来操作文件

访问模式说明
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

1.2因为文件的读取是流式的,像一个水管的阀门一样。每次读取操作的文件的时候,要先打开阀门open(),所以用完也要关闭。直接fo.close()即可。


 
 
  1. # 新建一个文件,文件名为:test.txt
  2. f = open( 'test.txt', 'w')
  3. # 关闭这个文件,文件操作完毕要将流给关闭
  4. f.close()

2.文件的读写操作read/write

1.写数据:使用write(“content”),可以完成向文件写入数据,注意:如果文件不存在那么创建,如果存在那么就先清空文件(覆盖),然后写入数据到文件里.


 
 
  1. f = open( 'write_demo.txt', 'w') #打开文件,往哪个文件里写入数据。如无,创建。
  2. print ( "文件名为: ", f.name) #f.name打印文件的名称,带拓展名
  3. f.write( 'hello ,I am writing ') #注意write写入是先将文件内容清空,然后再写入。
  4. f.close() #关闭文件

2.读数据:使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(字符个数),如果没有传入num或者为负,那么就表示读取文件中所有的数据,read()将读取的数据以字符串的形式返回。注意:

  • 如果open是打开一个文件,那么可以不用写打开的模式,即只写 open('aaa.txt')
  • 如果使用read读了多次,那么后面继续使用read读取的数据是从上次读完后的位置开始的
  • 注意:read ()方法默认会把文件的所有内容 一次性读取到内存,当然可以指定读取的字符数如果文件太大,对内存的占用会非常严重

 
 
  1. #1.准备文件
  2. f = open( 'write_demo.txt', 'w+') #新建文件,w+表示用于读写
  3. f.write( '你好abc王晓明,hello ') #写入内容
  4. f.close() #文件关闭
  5. #1.读取文件开始
  6. f= open( "write_demo.txt", 'r')
  7. content=f.read( 3) #3表示读取3个字符,虽然说是byte。但是有中文时实际按字符返回的
  8. print( "读取的内容:%s"%content)
  9. content1=f.read( 1) #注意如果用read(),读取全部,后面再加read(num),就没有内容可读了。返回空字符串
  10. print( "读取文件的内容:%s"%content1)
  11. content2=f.read( 5)
  12. print( "读取文件的内容:%s"%content2)
  13. f.close()
  14. '' '
  15. 读取的内容:你好a
  16. 读取文件的内容:b
  17. 读取文件的内容:c王晓明,
  18. ' ''

3.读数据:readlines()可以按照行的方式把整个文件中的内容进行一次性读取,读取所有行(直到结束符 EOF)并返回列表,并且返回的是一个列表,其中每一行(按着换行符进行判断一行)的数据为一个元素。


 
 
  1. f = open( 'test.txt', 'r')
  2. content = f.readlines() #读取文件中的全部行,按行划分存储到列表中,类型字符串
  3. print(type(content)) #打印读取结果的值类型,用list列表存储
  4. i= 1 #遍历列表,将读取的内容显示出来,按照原来文件的行划分。
  5. for temp in content:
  6. print( "%d:%s"%(i, temp))
  7. i+= 1
  8. f.close()
  9. '''
  10. <class 'list'>
  11. 1:hello,world,
  12. 2:this is a demo
  13. '''

4.读数据:readline(),对原文件的数据按行读取,(行的划分是\n).每次只读取一行。如果有多次读取的话,下面一次读取的偏移量是上面读取后的偏移量。


 
 
  1. f = open( 'test.txt', 'r')
  2. content = f.readline()
  3. print( "第一次读取:%s"%content)
  4. content = f.readline()
  5. print( "第二次读取:%s"%content)
  6. f.close()
  7. '''
  8. 第一次读取:hello,world,
  9. 第二次读取:this is a demo
  10. '''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值