码迷,mamicode.com
首页 > 其他好文 > 详细

py09.1_文件处理

时间:2018-06-11 02:18:28      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:控制   截断   指针   ace   imp   byte   读取   class   了解   

一、控制文件指针移动

f.seek(offset,whence)
offset 代表文件指针的偏移量,单位是字节bytes
whence 代表参考物,有三个取值
0:参照文件的开头
1:参照当前文件指针所在位置
2:参照文件末尾
PS:快速移动到文件末尾 f.seek(0,2)
?强调:whence=1和whence=2只能在b模式下使用

f.tell()  每次统计都是从文件开头到当前指针所在位置

?了解:

只有在t模式下的read(n),n代表的是字符个数,除此之外的任何文件只要涉及到文件指针移动的都是以字节为单位

f.truncate()  #截断  参照物永远是文件开头

二、文件的修改

方式一:

思路:先将原文件内容一次性全部读入内存,然后在内存修改完毕后,再
覆盖写回原文件
优点:在修改期间,文件内容只有一份
缺点:当文件过大的情况下或占用过多的内存空间

with open("文件路径""r",encoding="utf-8") as read_f:
    msg=read_f.read()
    msg=msg.replace("old","new")
with open("文件路径""w",encoding="utf-8") as write_f:
    write_f.write(msg)

方式二:
思路:
1、以读的方式打开原文件,以写的方式打开一个新文件
2、从原文件中循环读取每一行内容修改后写入新文件
3、删除原文件,将新文件重命名为原文件的名字

优点:同一时刻只有一行内容存在于内存中
缺点:在修改期间,文件内容始终存在两份,但修改完毕后会只留一份

import os
with open("文件路径1""r",encoding=""utf-8) as read_f,        open("文件路径1-副本""w",encoding="utf-8") as write_f:
    for line in read_f:
        write_f.write(line.replace("old","new"))
os.remove("文件路径1")    #删除旧文件
os.rename("文件路径-副本""文件路径1")  #将副本重新命名问原文件路径1

 

py09.1_文件处理

标签:控制   截断   指针   ace   imp   byte   读取   class   了解   

原文地址:https://www.cnblogs.com/Smart1san/p/9165195.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!