博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于文件操作
阅读量:4453 次
发布时间:2019-06-07

本文共 1992 字,大约阅读时间需要 6 分钟。

文件操作流程:

1.打开文件,得到文件句柄并赋值给一个变量

2.通过句柄对文件进行操作

3.关闭文件

 

关python文件读写模式w,w+,r,r+,a,a+的区别:

 

 

模式 可做操作 若文件不存在 是否覆盖
r 只能读 报错 -
r+ 可读可写 报错
w 只能写 创建
w+  可读可写 创建
a   只能写 创建 否,追加写
a+ 可读可写 创建 否,追加写

 

读操作:

三步走:打开文件,读文件,关闭文件

1.read()方法

f=open('春晓','r',encoding='utf-8')data=f.read()    #如果写data=f.read(5),就会显示5个字符的内容print(data)f.close()

2.readline()方法

f=open('春晓','r',encoding='utf-8')data=f.readline()print(data)f.close()    #输出第一行,如果再添加一个readline(),就继续输出第二行

3.readlines()方法

f=open('春晓','r',encoding='utf-8')data=f.readlines() print(data)f.close()    #输出['春眠不觉晓\n', '处处闻啼鸟\n', '夜来风雨深\n', '花落知多少'],输出一个列表

 

写操作:

1.先格式化再写

f=open('春晓','w',encoding='utf-8')f.write('hello world')f.wirte('chen')f.close()                #输出hello worldchen

2.不格式化,追加内容写进去

f=open('春晓','a',encoding='utf-8')f.write('\nhello world')f.write('\nchen')f.close()  #就把open()方法里的‘w’改成‘a’,a即append

 

文件操作的一些方法:

1.tell()方法

可以输出当前指针的位置

f=open('春晓','r',encoding='utf-8')print(f.tell())    #输出0print(f.read(5))   #输出春眠不觉晓print(f.tell())    #输出15#tell()方法一个中文占三个字节,一个英文占1个字节,如果把文件第一句内容改为‘Hello world’,则最后一个print(f.tell())输出为5

2.seek()方法

可以改变当前指针的位置

f=open('春晓','r',encoding='utf-8')print(f.tell())    #输出0print(f.read(5))   #输出春眠不觉晓print(f.tell())    #输出15f.seek(0)        #把指针改回0print(f.tell())    #输出0

 

3.flush()方法

flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。

一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

import timefile=open('春晓','w',encoding='utf-8')for i in range(30):    file.write('1')        #在缓冲区写入一个‘1’    file.flush()            #将缓冲区中的一个‘1’写入磁盘(即文件中)    time.sleep(0.1)    #暂停0.1sfile.close()                #关闭文件

 

4.truncate()方法

 truncate() 方法用于从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后 V 后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。 。

truncate()这个函数跟文件指针位置无关。每次执行都是从文件开始处执行,也就是seek(0,0)的位置开始,截取指定参数的n个字符,其它的全部删除。所以要用a+(a不行)或是r+。如果用w+模式会读出空,因为w是先删除再写,一定不要用。执行结果为,只剩文件开头的n个字符。

当size值存在时,表示该值位置处截断,该位置后面的内容被删除;

当size值不存在时,表示从当前位置截断,但不是真正的截断,该位置后面的内容不会被真正删除  ????

 

转载于:https://www.cnblogs.com/cjluchen/p/8485974.html

你可能感兴趣的文章
sc服务查询
查看>>
git clone 出错 fatal: pack has bad object at offset 26060927: inflate returned -3
查看>>
利用runtime字典转模型
查看>>
Asp实现页面跳转有三种方法
查看>>
vertical-align的用处
查看>>
Popularize what is heart of mobile phone?
查看>>
CSS 笔记六(Image/Attribute Selectors)
查看>>
PHP 笔记一(systax/variables/echo/print/Data Type)
查看>>
CF449B最短路
查看>>
Stream语法详解
查看>>
树链剖分总结笔记
查看>>
hdu 4043
查看>>
hdu 1506
查看>>
PowerShell创建 Profile
查看>>
MySQL+Altas 读写分离测试(Altas 不能用存储过程,Update和Delete必须要有参数)
查看>>
Spring声明式事务管理基于tx/aop命名空间
查看>>
元素float以后,div高度无法自适应解决方案
查看>>
redis持久化 RDB和AOF
查看>>
回到顶部按钮
查看>>
HTML5的新结构标签
查看>>