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中的全局变量用法分析
Jun 09 Python
Python实现矩阵转置的方法分析
Nov 24 Python
在CMD命令行中运行python脚本的方法
May 12 Python
python中的二维列表实例详解
Jun 19 Python
Python告诉你木马程序的键盘记录原理
Feb 02 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
python小程序实现刷票功能详解
Jul 17 Python
Pycharm+Python+PyQt5使用详解
Sep 25 Python
Python 使用元类type创建类对象常见应用详解
Oct 17 Python
Django在Model保存前记录日志实例
May 14 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
python flask开发的简单基金查询工具
Jun 02 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自动生成月历代码
2006/10/09 PHP
php命令行写shell实例详解
2018/07/19 PHP
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
javascript this详细介绍
2016/09/19 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
浅谈Vue.js
2017/03/02 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
代码详解javascript模块加载器
2018/03/04 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
Vue3为什么这么快
2020/09/23 Javascript
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
跟老齐学Python之数据类型总结
2014/09/24 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
新员工培训个人的自我评价
2013/10/09 职场文书
银行服务感言
2014/03/01 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
国庆横幅标语
2014/10/08 职场文书
民主评议党员工作总结
2014/10/20 职场文书
物业保安辞职信
2015/05/12 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL