python基础之文件处理知识总结


Posted in Python onMay 23, 2021

一、open()方法

python open()方法用于打开一个文件,并返回文件对象,在对文件处理的过程中都需要用到这个函数,如果文件无法打开,会抛出OSError。

注意:使用open()方法的时候一定到保证关闭文件对象,文件里面的内容才会被保存,关闭文件需要调用close()方法。

open()方法常用的形式是接收两个参数:文件名(file)和模式(mode)

基本语法

open(file,mode='r')

完整的语法:

open(file,mode='r',buffering=1,encoding=None,errors=None,newline=None,closefd=True)

参数说明:

  • file: 必须的,表示某个路径下文件名(可以是相对路径,也可以是绝对路径) 
  • mode:可选参数,文件打开的模式    
  • buffering: 设置缓冲
  • encoding: 编码,一般用utf8
  • errors: 报错级别
  • newline:区分换行符
  • closefd:传入的file参数类型

mode表示文件打开模式,有几种模式呢?参考如下:

  • r: 以只读的方式打开文件。文件的指针将会放到文件的开头。这是文件默认的打开模式
  • w:  打开一个文件只能用于写入。如果文件存在则打开文件,并且从头开始编辑,文件原有的内容会被清空。如果文件不存在,则会创建新的文件
  • a:  打开一个文件用于在里面追加内容。如果文件已经存在,文件指针将会放在文件的结尾。也就是新的内容会被写道已有的内容之后。如果该文件不存在的话,创建新文件进行写入
  • r+:打开一个文件用于读写,文件指针将会放在文件的开头
  • a+: 打开一个文件用于读写,如果文件已经存在,文件指针将会放在文件的结尾,文件打开时回事追加模式,如果该文件不存在,创建新的文件用于读写
  • w+: 打开一个文件用于读写。如果该文件已经存在,则打开已经存在文件,并且从头开始编辑,即原有的内容会被删除。如果该文件不存在,则创建新文件
  • b: 二进制文件
  • rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认的模式,一般用于非文本文件,如图片,视频等
  • wb: 以二进制格式打开一个文件只用于写入。如果该文件已经存在则打开文件,并从文件的开头开始编辑,即原有的内容会被删除,如果该文件不存在,创建新文件。一般用于非文本文件,如图片,视频等
  • ab:以二进制格式打开一个文件用于追加,如果该文件已经存在,文件指针将会放在文件的结尾,也就是说,新的内容将会被写道已有的内容之后,如果该文件不存在,则创建新的文件并写入
  • ab+:以二进制格式打开一个文件用于追加,如果该文件已经存在,文件指针将会放在文件的结尾,如果该文件不存在,创建新的文件用于读写

例1:以w模式打开文件

f = open('myfile.txt', 'w')
f.write('hello,world!')
f.close()
 
##输出结果
在当前路径下成一个myfile.txt文件,并且把'hello world'写到该文件
 
myfile.txt内容如下:
hello,world!

例2: 以a模式打开文件

f=open('myfile.txt','a')
f.write('\ngood lucky')
f.close()
 
##输出结果:
会在文件末尾追加内容,不会覆盖原来的内容
 
myfile.txt内容如下:
hello,world!
good,lucky!

例3: 再以w模式打开文件,会把原来内容覆盖掉

f = open('myfile.txt', 'w')
f.write('welcome!')
f.close()
 
##输出内容:
 
myfile.txt内容如下:
welcome!

例4: 以r的模式读文件

f = open('myfile.txt', 'r') #以r模式读文件,再往里面write会报错
f.write('\nhello!')
f.close()
 
## 输出内容:
    f.write('\nhello!')
io.UnsupportedOperation: not writable

例5: 以r+的模式读文件

f = open('myfile.txt', 'r+') 
f.write('\nhello!')
f.close()
 
##输出结果
r+:打开一个文件用于读写,文件指针将会放在文件的开头
 
myfile.txt内容:
1--------------> 此处表示空行
2hello!

例6: 以w+模式写文件

f = open('myfile.txt', 'w+')
f.write('love!')
f.close()
 
##输出结果:
如果该文件已经存在,则打开已经存在文件,并且从头开始编辑,即原有的内容会被删除。如果该文件不存在,则创建新文件。
 
myfile.txt内容:
love!

二、read()方法

读取文件中的所有内容,读取之后光标移动到文件末尾。 必须以r或r+模式,才可以使用read()。

例7: 以w+模式写文件,再以r+模式来读取文件内容

f = open('myfile.txt', 'w+')
f.write('hello,world!\ngood,lucky!!')
f.close()
 
##输出结果:
w+ 如果该文件已经存在,则打开已经存在文件,并且从头开始编辑,即原有的内容会被删除。如果该文件不存在,则创建新文件。
 
myfile.txt内容:
hello,world!
good,lucky!!
f = open('myfile.txt', 'r+') #
print(f.read())
 
##输出结果:
hello,world!
good,lucky!!

例8:以r+模式写文件,再来读取文件

f = open('myfile.txt', 'r+') #以r+的模式,会将文件指针放在开头,然后将指定字符替换掉文件中原来的字符  
f.write('\nwelcom')
print(f.read())
 
##输出结果:
rld!
good,lucky!!
 
#myfile.txt内容如下:
1----------->空行
2welcomrld!
3good,lucky!!

三、readlines()方法

readlines()一行行读文件

例9:

f = open('myfile.txt', 'r+')
print(f.readline())
print(f.readline())
print(f.readline())
 
##输出结果
 
 
welcomrld!
 
good,lucky!!

readlines()

一行行读取文件内容,然后存放在列表中,可以读取所有行的内容,每行的内容都作为列表中的一个元素存在列表里,并且返回一个列表。 这个列表可以使用for..in 结构进行处理。 如果碰到EOF结束符,则返回空字符。

例10:

f = open('myfile.txt', 'r')
print(f.readlines())
 
##输出内容:
['\n', 'welcomrld!\n', 'good,lucky!!']
 
 
 
f = open('myfile.txt', 'r')
for i in f.readlines():
    i = i.strip()   # 去掉空格,如\n换行符
    print(i)
 
##输出内容:
----------->空行
welcomrld!
good,lucky!!

四、seek()方法

seek() 用于移动文件读取指针到指定位置

语法如下:f.seek(offset,[,whence])
offset--开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数,表示从倒数第几位开始
whence--可选参数,默认是0。给offset定义一个参数,表示从哪个位置开始偏移;0代表从文件开头算起;1代表从当前位置开始算起;2代表从文件末尾算起。 

如果操作成功,则返回新的文件位置;如果操作失败,返回-1

例11:

f = open('workfile.txt', 'wb+')
print(f.write(b'0123456789abcde'))
f.seek(5)
print(f.read(1))
f.seek(-3,2)
print(f.read(1))
 
##输出结果:
15
b'5'
b'c'
 
workfile.txt内容如下:
0123456789abcde

例12:

f = open('myfile.txt', 'r')
print('filename is :',f.name)
line=f.readline().strip()           ##去掉\n
print('第一次读取的数据是%s' % (line))
f.seek(0, 0)                        ##第一个0表示偏移量为0,第二个0表示从文件头开始偏移
line=f.readline().strip()
print('第二次读取的数据是%s' % (line))
 
##输出内容:
filename is : myfile.txt
第一次读取的数据是good,lucky!!
第二次读取的数据是good,lucky!!
 
myfile.txt内容如下:
good,lucky!!
##去掉 f.seek(0, 0),运行结果如下:
f = open('myfile.txt', 'r')
print('filename is :',f.name)
line=f.readline().strip()
print('第一次读取的数据是%s' % (line))
line=f.readline().strip()
print('第二次读取的数据是%s' % (line))
 
##运行结果如下:
filename is : myfile.txt
第一次读取的数据是good,lucky!!
第二次读取的数据是

五、tell()函数 

返回文件的当前位置

参考: https://www.runoob.com/python/file-tell.html

f = open('myfile.txt', 'r+')
print('filename is :', f.name)
line=f.readline()
print('读取的数据是%s' % (line))
 
 
line1=f.readline()
print('读取的数据是%s' % (line1))
pos=f.tell()
print('current position is %d:' % (pos) )
f.close()
 
##输出结果
filename is : myfile.txt
读取的数据是good,lucky!!
读取的数据是
current position is 12:
 
myfile.txt内容如下:
good,lucky!!
 
 
 
 
##输出结果
filename is : myfile.txt
读取的数据是good,lucky!!
 
读取的数据是g
current position is 15:
 
myfile.txt内容如下:
good,lucky!!
g

到此这篇关于python基础之文件处理知识总结的文章就介绍到这了,更多相关python文件处理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python使用Django实现博客系统完整版
Sep 29 Python
使用Python设计一个代码统计工具
Apr 04 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
Python Web静态服务器非堵塞模式实现方法示例
Nov 21 Python
python求绝对值的三种方法小结
Dec 04 Python
Python和Anaconda和Pycharm安装教程图文详解
Feb 04 Python
如何表示python中的相对路径
Jul 08 Python
Python面向对象多态实现原理及代码实例
Sep 16 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 Python
教你如何用python开发一款数字推盘小游戏
Apr 14 Python
Django中的JWT身份验证的实现
May 07 Python
Python绘制地图神器folium的新人入门指南
Python关于OS文件目录处理的实例分享
May 23 #Python
python引入其他文件夹下的py文件具体方法
Python 解决空列表.append() 输出为None的问题
May 23 #Python
Python - 10行代码集2000张美女图
python办公自动化之excel的操作
May 23 #Python
python爬取豆瓣电影TOP250数据
May 23 #Python
You might like
用libTemplate实现静态网页的生成
2006/10/09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
JS方法调用括号的问题探讨
2014/01/24 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
vue实现五子棋游戏
2020/05/28 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python的time模块中的常用方法整理
2015/06/18 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
python爬取m3u8连接的视频
2018/02/28 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
产品售后服务承诺书
2014/05/21 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
小学庆六一活动总结
2014/08/28 职场文书
药店采购员岗位职责
2014/09/30 职场文书
社区务虚会发言材料
2014/10/20 职场文书
大雁塔导游词
2015/02/04 职场文书
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记