python的文件操作方法汇总


Posted in Python onNovember 10, 2017

文件的读操作

示例:

print("->文件句柄的获取,读操作:")
 
 f = open('无题','r',encoding='utf8')
 d = f.read()
 f.close()
 print(d)
 
 print('->例二:')
 f = open('无题','r',encoding='utf8')
 e = f.read(9)
 f.close()
 print(e)
 #python3中,文件中一个中英文都占位1

运行结果:

复制代码

->文件句柄的获取,读操作:
昨夜星辰昨夜风
画楼西畔桂堂东
身无彩凤双飞翼
心有灵犀一点通
->例二:
昨夜星辰昨夜风
画

文件的写操作

知识点:

1. 写操作前,文件先格式化清空文件

2.清空操作,在执行open的w方法后,清空

print("写的操作,写文件的时候,不能调用读方法,读文件的时候,不能调用写方法")
 
f = open('python','w',encoding='utf8')
f.write("I must learn python \nbecause, python is important \n")
f.write("java is better?")
f.write("maybe") #上面的语句,没有加换行符,所以输出的内容是紧接的
f.close()

运行结果:

打开文件后显示如下

I must learn python 
because, python is important 
java is better?maybe

文件的append方法

语法格式:

f = open('文件名','a','encoding = utf8')

文件这种方法为追加模式:1, 空白文件中,直接从头开始写入内容; 2 有内容的文件,会在末尾开始继续写入内容

示例:

f = open('python','a',encoding='utf8')
f.write("花开又花落")
f.close()

运行结果:

I must learn python 
because, python is important 
java is better?maybe花开又花落

readline 和 readlines

 readline是逐行读取

readlines是全文读取

示例:

print("readline方法")
 f = open('无题','r',encoding='utf8')
 a = f.readline()
 print("此时光标位置:",f.tell())
 b = f.readline()
 print("此时光标位置:",f.tell())
 print(a.strip()) #strip是字符串方法中去除空格和换行的方法
 print(b.strip())
 
 
 print("readlines方法,会将每行的内容组成一个列表打印")
 f = open('无题','r',encoding='utf8')
 c = f.readlines()
 print(c)
 print(id(c))
 print(id(f))
 for i in c:
  print(i.strip())
 print("遍历方法")
 f.seek(0)
 for i in f:
  print(i.strip())
 f.close() #文件的操作中,close()方法一定不能忘记

运行结果:

readline方法
此时光标位置: 23
此时光标位置: 46
昨夜星辰昨夜风
画楼西畔桂堂东
readlines方法,会将每行的内容组成一个列表打印
['昨夜星辰昨夜风\n', '画楼西畔桂堂东\n', '身无彩凤双飞翼\n', '心有灵犀一点通']
37826824
5344280
昨夜星辰昨夜风
画楼西畔桂堂东
身无彩凤双飞翼
心有灵犀一点通
遍历方法
昨夜星辰昨夜风
画楼西畔桂堂东
身无彩凤双飞翼
心有灵犀一点通

文件的tell() 和 seek()方法

 示例:

f = open('无题','r',encoding='utf8')
f.read(4)
print('当前光标位置',f.tell())

f.seek(10)
print('当前光标位置',f.tell())
f.close()

#read时,一个中文算三个字符

运行结果:

当前光标位置 12
当前光标位置 10

文件操作之flush方法

import sys,time

for i in range(20):
 sys.stdout.write("#")
 sys.stdout.flush()
 time.sleep(1)

truncate方法

f = open('test','w')
f.write("hello")
f.write("\n")
f.write("python")
f.flush() #这样不用执行close方法,内存中的数据,就会写入到disk
f.close()

f = open('test','a')
f.truncate(2) #截断方法,光标从2开始往后截取
f.close()

其他的文件方法: r+ 读写方法

基于字符read & write

最基本的文件操作当然就是在文件中读写数据。这也是很容易掌握的。现在打开一个文件以进行写操作:

fileHandle = open ( 'test.txt', 'w' )

‘w'是指文件将被写入数据,语句的其它部分很好理解。下一步就是将数据写入文件:

fileHandle.write ( 'This is a test.\nReally, it is.' )

这个语句将“This is a test.”写入文件的第一行,“Really, it is.”写入文件的第二行。最后,我们需要做清理工作,并且关闭文件:

fileHandle.close()

正如你所见,在Python的面向对象机制下,这确实非常简单。需要注意的是,当你再次使用“w”方式在文件中写数据,所有原来的内容都会被删除。如果想保留原来的内容,可以使用“a”方式在文件中结尾附加数据:

fileHandle = open ( 'test.txt', 'a' ) 
fileHandle.write ( '\n\nBottom line.' ) 
fileHandle.close()

然后,我们读取test.txt,并将内容显示出来:

fileHandle = open ( 'test.txt' ) 
print fileHandle.read() 
fileHandle.close()

以上语句将读取整个文件并显示其中的数据。

基于行的读写 line

fileHandle = open ( 'test.txt' ) 
print fileHandle.readline() # "This is a test." 
fileHandle.close()

同时,也可以将文件内容保存到一个list中:

fileHandle = open ( 'test.txt' ) 
fileList = fileHandle.readlines() 
for fileLine in fileList: 
print '>>', fileLine 
fileHandle.close()

 或者在文件中一次读取几个字节的内容:

fileHandle = open ( 'test.txt' ) 
print fileHandle.read ( 1 ) # "T" 
fileHandle.seek ( 4 ) 
print FileHandle.read ( 1 ) # " "(原文有错)
Python 相关文章推荐
在Python中marshal对象序列化的相关知识
Jul 01 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 Python
在Python程序员面试中被问的最多的10道题
Dec 05 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
Python编程深度学习绘图库之matplotlib
Dec 28 Python
python实现简单加密解密机制
Mar 19 Python
Python socket模块实现的udp通信功能示例
Apr 10 Python
PyQt5显示GIF图片的方法
Jun 17 Python
python函数的万能参数传参详解
Jul 26 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
Python如何重新加载模块
Jul 29 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 #Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 #Python
Python实现图片滑动式验证识别方法
Nov 09 #Python
浅谈python中的占位符
Nov 09 #Python
速记Python布尔值
Nov 09 #Python
浅谈python jieba分词模块的基本用法
Nov 09 #Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 #Python
You might like
php实现websocket实时消息推送
2018/03/30 PHP
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
vue中如何使用ztree
2018/02/06 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
对于Python中线程问题的简单讲解
2015/04/03 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
详解Python3定时器任务代码
2019/09/23 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
Java如何获得ResultSet的总行数
2016/09/03 面试题
建筑工程技术应届生求职信
2013/11/17 职场文书
自立自强的名人事例
2014/02/10 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
党员群众路线自我剖析材料
2014/10/06 职场文书
学生上课说话检讨书
2014/10/25 职场文书
百年校庆感言
2015/08/01 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang