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入门篇之编程习惯与特点
Oct 17 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 Python
PyQt5实现五子棋游戏(人机对弈)
Mar 24 Python
Python类中方法getitem和getattr详解
Aug 30 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
django的autoreload机制实现
Jun 03 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
关于Python中进度条的六个实用技巧分享
Apr 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 object转数组示例
2014/01/15 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
Django多数据库联用实现方法解析
2020/11/12 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
前厅部经理岗位职责范文
2014/02/04 职场文书
技术总监管理职责范本
2014/03/06 职场文书
合作意向书范本
2014/03/31 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
春风化雨观后感
2015/06/11 职场文书
python脚本框架webpy的url映射详解
2021/11/20 Python