文件处理

一、打开文件的模式

  文件句柄 = open(‘文件路径’,‘模式’)

对于非文本文件,我们只能使用b模式,‘b'表示以字节的方式操作(而且所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jpg视频文件的avi格式)

二、文件内光标移动

      1. read(3):

    1. 文件打开方式为文本模式时,代表读取3个字符

    2. 文件打开方式为b模式时,代表读取3个字节

    其余的文件内光标移动都是以字节为单位如seek,tell,truncate

 2.seek

 f.seek(offset,whence)
  offset:相对偏移量 光标移动的位数
  whence:
        0:参照文件的开头  t和b都可以使用
        1:参照光标所在的当前位置,只能在b模式下用
        2:参照文件的末尾,只能在b模式下使用
    with open (r'test','rt'encoding ='utf-8')as f:
    print (f.read(1))

三、截断文件
     with open(r'test','a',encoding='utf-8') as f:
    f.truncate(6)  # 接收的字节的长度 整型
    # 保留0~6字节数 后面的全部删除(截断)

四、修改文件

文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式:

方式一:

 先将数据由硬盘读到内存(读文件)
 在内存中完成修改(字符串的替换)
再覆盖原来的内容(写文件)

优点:任意时间硬盘上只有一个文件 不会占用过多硬盘空间
缺点:当文件过大的情况下,可能会造成内存溢出

方式二:

创建一个新文件
#循环读取老文件内容到内存进行修改  将修改好的内容写到新文件中
将老文件删除  将新文件的名字改成老文件名

优点:内存中始终只有一行内容 不占内存
缺点:再某一时刻硬盘上会同时存在两个文件

原文地址:https://www.cnblogs.com/panyi2019/p/11153492.html