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编码时应该注意的几个情况
Mar 04 Python
python实现简单爬虫功能的示例
Oct 24 Python
老生常谈Python基础之字符编码
Jun 14 Python
使用Kivy将python程序打包为apk文件
Jul 29 Python
Python实现连接postgresql数据库的方法分析
Dec 27 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
python爬取微信公众号文章
Aug 31 Python
Django框架模板文件使用及模板文件加载顺序分析
May 23 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
使用python绘制横竖条形图
Apr 21 Python
Python中requests库的用法详解
Jun 05 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
简单的php中文转拼音的实现代码
2014/02/11 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
php文件上传简单实现方法
2015/01/24 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
浅谈Javascript数组的使用
2015/07/29 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
Python base64编码解码实例
2015/06/21 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
Shell编程面试题
2012/05/30 面试题
大学生简历的个人自我评价
2013/12/04 职场文书
银行批评与自我批评
2014/02/10 职场文书
上班玩手机检讨书
2014/02/17 职场文书
小学庆六一活动方案
2014/02/28 职场文书
大学新生军训方案
2014/05/03 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
青年志愿者活动方案
2014/08/17 职场文书
公司会议开幕词
2015/01/29 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书