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计算三维矢量幅度的方法
Jun 15 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 Python
python实现批量nii文件转换为png图像
Jul 18 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
opencv之为图像添加边界的方法示例
Dec 26 Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 Python
python中time tzset()函数实例用法
Feb 18 Python
python实现A*寻路算法
Jun 13 Python
如何理解python接口自动化之logging日志模块
Jun 15 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
Linux下编译redis和phpredis的方法
2016/04/07 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
二级域名转向类
2006/11/09 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
python SocketServer源码深入解读
2019/09/17 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
150行python代码实现贪吃蛇游戏
2020/04/24 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
C#面试题问题集
2016/04/02 面试题
车间班组长的职责
2013/12/13 职场文书
财务部总监岗位职责
2014/03/12 职场文书
校企合作协议书
2014/04/16 职场文书