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操作MySQL数据库9个实用实例
Dec 11 Python
Python3使用requests发闪存的方法
May 11 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
python3.5基于TCP实现文件传输
Mar 20 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
softmax及python实现过程解析
Sep 30 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 Python
Python读取JSON数据操作实例解析
May 18 Python
python基于opencv实现人脸识别
Jan 04 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 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
基于xcache的配置与使用详解
2013/06/18 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
5款Javascript颜色选择器
2009/10/25 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
Python通过poll实现异步IO的方法
2015/06/04 Python
python脚本替换指定行实现步骤
2017/07/11 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
Python中常用的os操作汇总
2020/11/05 Python
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
师范学院教师自荐书
2014/01/31 职场文书
幼儿教师求职信
2014/05/24 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android