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 相关文章推荐
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
如何利用Fabric自动化你的任务
Oct 20 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
Python3使用pandas模块读写excel操作示例
Jul 03 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
Jul 13 Python
Python如何测试stdout输出
Aug 10 Python
Python利用matplotlib绘制散点图的新手教程
Nov 05 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笔试题
2009/08/04 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
关于PHP通用返回值设置方法
2017/03/31 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
Python中的引用和拷贝浅析
2014/11/22 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
Python程序运行原理图文解析
2018/02/10 Python
Python管理Windows服务小脚本
2018/03/12 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
django和vue实现数据交互的方法
2019/08/21 Python
python二维图制作的实例代码
2020/12/03 Python
Python运算符+与+=的方法实例
2021/02/18 Python
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
什么是View State?
2013/01/27 面试题
党风廉政建设责任书
2014/04/14 职场文书
大学生励志演讲稿
2014/04/25 职场文书
教师节横幅标语
2014/10/08 职场文书
项目安全员岗位职责
2015/02/15 职场文书
幸福终点站观后感
2015/06/04 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技
MySQL数据库之存储过程 procedure
2022/06/16 MySQL