Python文件操作方法详解


Posted in Python onFebruary 09, 2020

本节内容

1、文件常用操作汇总

2、打开文件

3、操作文件

4、关闭文件

一、文件常用操作汇总

Python文件操作方法详解

二、打开文件

1、普通打开模式

  • r,英文:read,只读模式(默认)
  • w,英文:write,只写模式(不可读,不存在则创建新文件,存在则删除内容)
  • a,英文:append,追加模式(不可读,不存在则创建,存在则只追加内容

2、同时读写模式

  • r+,可读写文件(可读;可写;可追加,不存在文件则报错)
  • w+,可写读文件(可读,可写,创建新文件)
  • a+,可追加和读文件(可读,可追加,不存在则创建)

3、二进制打开模式

  • rb,二进制读
  • wb,二进制写
  • ab,二进制追加

三、操作文件 

文件内容:

Somehow, it seems the love I knew was always the most destructive kind
不知为何,我经历的爱情总是最具毁灭性的的那种
Yesterday when I was young
昨日当我年少轻狂

 1、read()

当read()函数中传入整数(int)参数,则读取相应的字符数,如果不填写,则默认读取所有字符

f = open("yesterday2",'r',encoding="utf-8")
#默认读取全部字符
print(f.read())
f.close()
#输出
Somehow, it seems the love I knew was always the most destructive kind
不知为何,我经历的爱情总是最具毁灭性的的那种
Yesterday when I was young
昨日当我年少轻狂
 
f = open("yesterday2",'r',encoding="utf-8")
#只读取10个字符
print(f.read(10))
f.close()
#输出
Somehow, i

注:只有当文件有读权限时,才可以操作这个函数

2、获取文件句柄所在的指针的位置tell()

获取文件句柄所在的指针的位置

f = open("yesterday2",'r',encoding="utf-8")
print(f.read(10))
#获取指针位置
print(f.tell())
f.close()
#输出
Somehow, i #读取的内容
10 #指针位置

 3、设置文件句柄所在的指针位置seek()

f = open("yesterday2",'r',encoding="utf-8")
print(f.read(10))
#设置之前的指针位置
print(f.tell())
f.seek(0)
#设置之后的指针位置
print(f.tell())
f.close()
#输出
Somehow, i #读取文件的内容
10 #设置之前的指针位置
0 #设置之后的指针位置

 4、打印文件的编码encoding

f = open("yesterday2",'r',encoding="utf-8")
print(f.encoding)
f.close()
#输出
utf-8

 5、fileno()

返回文件句柄在内存中的编号

f = open("yesterday2",'r',encoding="utf-8")
print(f.fileno())
f.close()
#输出
3

 6、name

返回文件名

f = open("yesterday2",'r',encoding="utf-8")
print(f.name)
f.close()
#输出
yesterday2

 7、isatty()

判断是否是一个终端设备(比如:打印机之类的)

f = open("yesterday2",'r',encoding="utf-8")
print(f.isatty())
f.close()
#输出
False #表示不是一个终端设备

 8、seekable()

 不是所有的文件都可以移动光标,比如tty文件,可以移动的,返回True

f = open("yesterday2",'r',encoding="utf-8")
print(f.seekable())
f.close()
#输出
True

 9、readable()

文件是否可读

f = open("yesterday2",'r',encoding="utf-8")
print(f.readable())
f.close()
#输出
True

10、writeable()

文件是否可写

f = open("yesterday2",'r',encoding="utf-8")
print(f.writable())
f.close()
#输出
False #文件不可写

11、flush()

写数据时,写的数据不想存内存中缓存中,而是直接存到磁盘上,需要强制刷新

>>> f = open("yesterday2","w",encoding="utf-8")
#这时'hello word'在缓存中
>>> f.write("hello word")
#强刷到磁盘上
>>> f.flush()

这个怎么实验呢?在cmd命令行中,cd到你文件所在的路径下,然后输入python,在Python命令行中输入上面代码

①cd d:\PycharmProjects\pyhomework\day3下(因为我的被测文件在这个文件夹下)

Python文件操作方法详解

②在这个目录下输入Python命令行,然后进行测试

Python文件操作方法详解

③强制刷新之前

Python文件操作方法详解

 ④执行强刷命令之后

 Python文件操作方法详解

⑤强刷后文件中的内容变化

Python文件操作方法详解

注:以写的模式打开文件,写完一行,默认它是写到硬盘上去的,但是其实它不一定写到硬盘上去了。当你刚写完一行,如果此时断电,有可能,你这行就没有写进去,因为这一样还在内存的缓存中(内存中的缓存机制),所以你有不想存缓存,所以就要强制刷新。那一般在什么情况下用呐?比如:存钱

12、closed

判断文件是否关闭

f = open("yesterday2","r",encoding="utf-8")
f.read()
print(f.closed)
#输出
False

13、truncate(截取字符的数)

截取文件中的字符串,打开文件模式一定是追加模式(a),不能是写(w)和读(r)模式

#没有指针
f = open("yesterday2","a",encoding="utf-8")
f.truncate(10)
f.close()
#截取结果
Somehow, i
 
#有指针
f = open("yesterday2","a",encoding="utf-8")
f.seek(5)
f.truncate(10)
f.close()
#截取结果
Somehow, i

 说明truncate截取文件中的字段,并不受指针(seek)所在位置影响。

14、write()

写入文件内容

f = open("yesterday2","w",encoding="utf-8")
f.write("Somehow, it seems the love I knew was always the most destructive kind")
f.close()

 注:写功能只有当打开文件模式是写(w)或者追加(a)才可操作。

四、关闭文件

f.close()

更多关于Python文件操作方法请查看下面的相关文章

Python 相关文章推荐
python自动化测试实例解析
Sep 28 Python
python实现下载文件的三种方法
Feb 09 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
对Python中range()函数和list的比较
Apr 19 Python
Python GUI库PyQt5样式QSS子控件介绍
Feb 25 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
Python sublime安装及配置过程详解
Jun 29 Python
Python面向对象多态实现原理及代码实例
Sep 16 Python
python 模拟登陆163邮箱
Dec 15 Python
你喜欢篮球吗?Python实现篮球游戏
Jun 11 Python
Python列表操作方法详解
Feb 09 #Python
Python2与Python3的区别详解
Feb 09 #Python
python默认参数调用方法解析
Feb 09 #Python
Python集合操作方法详解
Feb 09 #Python
Python字符编码转码之GBK,UTF8互转
Feb 09 #Python
Python基础之字符串操作常用函数集合
Feb 09 #Python
python连接PostgreSQL过程解析
Feb 09 #Python
You might like
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Django框架中方法的访问和查找
2015/07/15 Python
Python如何调用JS文件中的函数
2019/08/16 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
若干个Java基础面试题
2015/05/19 面试题
文秘专业毕业生就业推荐信
2013/11/08 职场文书
工厂保洁员岗位职责
2013/12/04 职场文书
写给保洁员表扬信
2014/01/08 职场文书
师德学习感言
2014/01/31 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电