首页 > 其他 > 详细

文件处理的高级部分

时间:2021-03-30 00:28:21      阅读:30      评论:0      收藏:0      [点我收藏+]

文件处理的高级部分

1、文件处理的其他方法

with open(‘a.text‘,mode=‘r‘,encoding=‘utf-8‘)as a:
    a.read() # 读取文件内容
    a.readline() # 读取一行
    a.readlines() # 读取所有行
    a.readable() # 判断是否可读
    a.read(5) # 读取几个字符,如果在rb模式下,则是读几个字节,如果存在3个字节的汉字,只读了1个字节或者2个字节,解码会报错
    
只有t模式下的read(n)代表的是字符个数,除此之外全都是字节个数

 # c.text :helloword你好
with open(‘c.text‘,mode=‘rt‘,encoding=‘utf-8‘) as a:
    print(a.read(10)) # helloword你
with open(‘c.text‘,mode=‘rb‘) as a :
    print(a.read(3)) # b‘hel‘
with open(‘c.text‘,mode=‘rb‘) as a :
    print(a.read(10)) # b‘helloword\xe4‘ 如果使用decode()解码,因为只读到‘你’的第一个字节,会报错
    
with open(‘a.text‘,mode="w",encoding="utf-8") as a:
    a.write() # 写文件内容,一次写完
    a.writelines() # 写文件内容,一个一个写
    a.flush() # 刷新,直接把内容从内存中存入硬盘中,实时性使用

2、控制文件指针移动

控制文件内指针移动的单位:

主动控制文件指针移动:

0 模式:参照文件开头移动n个字节      # (0,0) 参照文件开头,移动0个字节

1 模式:参照当前所在的位置移动n个字节 # (1,1) 参照当前位置,移动1个字节

2 模式:参照文件末尾位置移动n个字节   # (-2,2) 参照末尾,向左移动2个字节

注意:只有 0 模式可以在 t 下使用, 1 和 2 模式都只能在 b 下使用

f.truncate(n) : 截断文件

永远从开头开始截断,n个字节。
 # a.txt : hello你好
with open(‘a.txt‘,mode = ‘at‘,encoding=‘utf-8‘) as a:
    f.truncate(6) # 会乱码,因为‘你’占用3个字节,截取后只取了‘你’的1个字节

3、文件修改的两种方式

3.1、方式一:

1、将文件内容一次性全部读入内存
2、在内存中将内容修改完毕
3、将新内容写回原文件
with open(‘c.text‘,mode=‘rt‘,encoding=‘utf-8‘) as a:
    res = a.read()
with open(‘c.text‘,mode =‘wt‘,encoding="utf-8") as a:
    a.write(res.replace(‘egon‘,"EGON"))

3.2、方式二:

1、以读的方式打开源文件,以写的方式打开一个临时文件
2、从源文件中读出一行内容到内存中,修改完毕后再写入临时文件,循环往复直到读完原件
3、删除源文件,将临时文件名改为源文件名
import os
with open(‘c.text‘,mode=‘rt‘,encoding=‘utf-8‘) as a,	open(‘.c.text.swp‘,mode=‘wt‘,encoding=‘utf-8‘)as b:
	for i in a:
        b.wtite(res.replace(‘egon‘,‘EGON‘))
os.remobe(‘c.text‘)
os.rename(‘.c.text.swp‘,‘c.text‘)

文件处理的高级部分

原文:https://www.cnblogs.com/BaiJiaZhengMing/p/14594332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!