文件的高级应用及修改的两种方式

文件的高级应用及修改的两种方式

一、文件的高级应用

1.1 r+(既可读又可写)

with open('test.py', 'r+', encoding='utf8') as fr:
    data = fr.read()
    print(fr.writable())
    fr.write('x = 10')
    print(data)
------------------------------------------------
True
'''
sean sb
tank sb
jason sb
nick 大帅比
'''

1.2 w+(不建议使用)

with open('test.py', 'w+', encoding='utf8') as fr:
    print(fr.readable())
    fr.write('x = 10')
    data =  fr.read()
    print(data)
----------------------------------------
True    

1.2 a+(a的指针在末尾。更不建议使用)

with open('test.py', 'a+', encoding='utf8') as fr:
    fr.seek(1, 0)   #表示指针从头开始,偏移一位
    data = fr.read()  # 指针在末尾
    print(data)
-----------------------------------------------------
 = 10

二、文件的内置方法

2.1 seek 指针(按字节位移动)

with open('test.py', 'rb') as fr:
    fr.seek(1)  # 1表示位移1位,默认从文件头开始
    fr.seek(1, 0)  # 1表示偏移1位,0表示从头开始  
    fr.seek(2, 1)  # 2表示偏移2位,1表示从当前位置开始  
    fr.seek(0, 2)  # 0表示偏移0位,2表示文件末开始,把指针移到文件末

2.2 tell(告诉当前指针的位置) (按字节移动)

with open('test.py', 'r', encoding='utf8') as fr:
    fr.seek(2, 0)   #从文件头开始,偏移2位
    print(fr.tell())     
-----------------------------------------------------
2

2.3 read(n) (读几个字符)

with open('test.py', 'r', encoding='utf8') as fr:
    print(fr.read(2))  # 读了2个字符也就是读了6个字节

2.4 truncate 截断 (按字节移动)

with open('test.py', 'a', encoding='utf8') as fr:
    fr.truncate(2)  # 把2个字节后面的东西全清空 
    #一个英文是1个字节,一个中文是3个字节
    

三、文件修改的两种方式

3.1 方式一

import os
with open('test.py', 'r', encoding='utf8') as fr, \
        open('test_swap.py', 'w', encoding='utf8') as fw:
    data = fr.read()   #全部读入内存,如果文件很大会很卡
    data = data.replace('sb', 'ss')  #在内存中完成修改
    fw.write(data)   # 新文件一次性写入原文件内容
os.remove('test.py')  # 删除文件
os.rename('test_swap.py', 'test.py')  # 重命名文件

3.2 方式二

import os
with open('test.py', 'r', encoding='utf8') as fr, \
        open('test_swap.py', 'w', encoding='utf8') as fw:
    for i in fr   #对fr文件里面的内容进行一个循环,逐行修改
    i = i.replace('sb', 'ss')  #在内存中完成修改
    fw.write(i)   # 新文件写入原文件修改后内容
os.remove('test.py')  # 删除文件
os.rename('test_swap.py', 'test.py')  # 重命名文件

转载于:https://www.cnblogs.com/zhuangyl23/p/11321886.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值