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 random模块(获取随机数)常用方法和使用例子
May 13 Python
Python学习笔记(二)基础语法
Jun 06 Python
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
Django admin禁用编辑链接和添加删除操作详解
Nov 15 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
公认8个效率最高的爬虫框架
Jul 28 Python
pandas apply多线程实现代码
Aug 17 Python
Django模型验证器介绍与源码分析
Sep 08 Python
总结Pyinstaller打包的高级用法
Jun 28 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获取地址栏信息的代码
2008/10/08 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP经典面试题集锦
2015/03/19 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
初识PHP中的Swoole
2016/04/05 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
jquery延迟对象解析
2016/10/26 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
python内置数据类型之列表操作
2018/11/12 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
python变量命名的7条建议
2019/07/04 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
Java里面如何创建一个内部类的实例
2015/01/19 面试题
公司JAVA开发面试题
2015/04/02 面试题
会计自荐书
2013/12/02 职场文书
应届毕业生求职自荐书
2014/01/03 职场文书
2014年小学植树节活动方案
2014/03/02 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
销售辞职信范文
2015/03/02 职场文书
入党个人总结范文
2015/03/02 职场文书
个人收入证明范本
2015/06/12 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
初中英语教学随笔
2015/08/15 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
如何理解python接口自动化之logging日志模块
2021/06/15 Python
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技