张玉龙1

导航

字符编码及文件处理

文件处理是什么,什么是文件?

文件是操作系统暴露给用户可以操作复杂硬盘的简单方法和接口

文件的读写模式:

r      只读模式
w 是写模式
a 追加模式
    r 只读模式 :
1.文件不存在的情况下 直接报错

2.文件存在的情况下 光标在文件的开头
w只写模式:(#######)
1。文件不存在的情况下,自动创建一个新的文件
2.文件存在的情况下,先清空文件的内容再写入
文件的操作单位:
t:文本模式
只能和r w a连用,并不写的情况下按默认就是t

b:二进制模式:
只能和r/w/a连用
该模式通常用来处理非文本文件
直接存储网络上传输过来的二进制数据

流程:
  python代码操作文件:
    f = open(r'文件路径',mode='读写模式',encoding='文件的编码')
    f.close()

 示例中的f可以认为就是一个遥控器,也就是文件的句柄

 文件的上下管理:

with open(r'文件的路径’,mome='读写模式', encoding = ‘文件的编码’) as f:
    
        文件操作代码

  实例解析:

  

1.代码中的r时代表原生的意思,也就是后面的转移符失去功能,代表字符原有的意思

2.文件的路径分为两种:

  1.相对路径:必须要有一个参照物;通常对于执行文件同一根目录(同一阶层)

  2.绝对路径:不需要任何参照物,直接根据文件的路径定位,相当于GPS定位。

3. mome :momen模式有R \W \A三个模式,不写的情况默认为 ‘r+t’  ps:t代表文本模式

4.encoding 参数只是在momen在文本模式下才使用,因为b模式不能使用

 

补充知识:

文件其他模式的补充:

  r+      读写(可读可写)

  w+      写读(可读可写)

  a+      写读(可读可写)

  

 

文件操作的功能

  f.read() 一次性将文件内容全部读到内存 当文件过大时可能导致计算甲内存溢出

  f.readline() 一行行的读取内容,始终在内存只有一行的内容

  f.readlines() 将一行行的内容存放到列表中,成为一个个元素

  f.readable():是否可读

  f.writeable() 是否可写
  f.write() 写文件
  f.writelines() 要接收一个容器类型
      for i in l:
        f.write(i)
  f.writeline() 写一行

 文件内光标的移动:

关键字为seek:

seek有两个参数:seek移动都是字节数

offset:相对偏移量 光标的移动位数

whence:

  0:代表参照文件的开头    文本模式和二进制模式都可以使用

   1:参照光标的所在位置,  只能在二进制模式使用

  2,: 参照文件的末尾   只能在二进制模式下是使用

tell() 内置功能可以查看光标的移动了多少位 bytes

truncate()截取、截断的意思 接受的字节的长度

如:

f.truncate(8)
则保留0~8字节数,其他的后面全部删除(截断)

 修改文件两种方式:

  一、现将数据由硬盘读取到内存(读文件)

    在内存中完成内容修改(字符串的替换)关键字:replace()

    再覆盖原来的文件内容(写文件)

 优势:

    任意时间硬盘上面只有一个文件,不会占用过多的硬件空间

 缺点:

    当文件过大时可能会造成内存的溢出(因为使用了 read())

二、创建一个新的文件

  for循环读取老文件内容到内存进行修改,将修改号的内容写到新的文件里面

  将老文件删除,将新文件的文件名改为老文件的名字(需要用到import os 函数 os的remove及renname)
os.remove('老文件名') # 删除老文件名字
os.rename(‘原文件名字’,‘需要改变成的名字’)

  

优势:

  内存中始终只有一条内容 不占内存

缺点:

  在某一时间硬盘上会同时出现两个文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2019-07-08 21:13  张玉龙1  阅读(173)  评论(0编辑  收藏  举报