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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
Python实现利用163邮箱远程关电脑脚本
Feb 22 Python
dataframe设置两个条件取值的实例
Apr 12 Python
python 构造三维全零数组的方法
Nov 12 Python
Pandas之Dropna滤除缺失数据的实现方法
Jun 25 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
django框架两个使用模板实例
Dec 11 Python
Python reversed函数及使用方法解析
Mar 17 Python
Python导入模块包原理及相关注意事项
Mar 25 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
Scrapy实现模拟登录的示例代码
Feb 21 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获取MSN好友列表类的实现代码
2013/06/23 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
js实现tab切换效果
2017/02/16 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
详解python中docx库的安装过程
2019/11/08 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
python同时遍历两个list用法说明
2020/05/02 Python
使用django自带的user做外键的方法
2020/11/30 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
好邻里事迹材料
2014/01/16 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
总经理人事任命书
2014/06/05 职场文书
2015年安全生产责任书
2015/01/30 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
运动会加油稿50字
2015/07/21 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
JavaScript实现简单拖拽效果
2021/09/15 Javascript
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS