python文件

文件

  1. 什么是文件?
     文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口
     用户/应用程序:(f=open(),获取文件对象、文件句柄)
     操作系统:文件
     计算机硬件:硬盘
    
  2. 文件的作用?
  用于应用程序操作硬盘进行数据的永久存储,或从硬盘中读取数据
  应用程序操作文件的行为,都是文件在调用操作系统,操作系统将其转为具体的硬盘操作
  1. 使用文件
# 打开文件,
f = open(r'文件路径',mode="rt",encoding="utf-8") # r兼容平台路径的转义
# 文件读写
f.read()
# 关闭文件
f.close()

文件模式

文件内容模式

  1. t模式:文本模式,读写都是以字符串(unicode)为单位的,只能针对文本文件,必须指定字符编码encoding="utf-8"
  2. b模式:binary模式
    # 1. 读写都是以bytes为单位
    # 2. 可以针对所有文件类型
    # 3. 一定不能指定字符编码
    # 4. 如何是纯英文字符,可以使用b'111aasdf'得到bytes类型
    # 5. "上".encode('utf-8') == bytes('上',encoding="utf-8")
    with open(r"xx.mp3",mode="rb") as f:
     ...
    

文件操作模式

  1. r模式:只读模式
  2. w模式:只写模式,清空写
  3. a模式:只写模式,追加写
  4. +模式(了解):可读可写,不能单独使用,必须与r/w/a配合使用
  5. x模式(了解):只写模式,不存在则创建,存在时报错

文件操作方法

# 读操作
f.read() # 读取所有内容,执行完读操作光标移动到最后
f.read(1024) # 读取内容大小,
f.readline() #一次读一行,光标移动到下一行首位
f.readlines() # 读取每一行,返回一个列表移动到最后

# 写操作
f.writelines(list) # list列表写入文件 

# flush
f.flush() # 刷新

# readable/wirtable/closed : 判断是否可以读、写、是否关闭
f.readable()
f.writable()
f.closed
f.name
f.encoding

文件的指针操作

指针的移动单位都是以bytes为单位的,只有一种情况特殊,t模式下的read(n),n代表的是字符个数

  1. 模式0:参照物是文件开头位置
  2. 模式1:参照物是指针当前位置
  3. 模式2:参照物是文件开头结尾

只有0模式可以在t下使用,1、2必须在b模式下用

f.seek(2,0)
f.seek(2,1)
f.seel(-2,2) # 倒序查找
f.tell() # 获取文件指针位置

文件修改

文件修改的本质是:修改的是内存,然后在硬盘中覆盖

# 方式1:文本编辑器采用就是这种方式-读到内存中然后修改,再将修改后的内容覆盖到源文件中
# 优缺点:占用内存,不占用硬盘
with open(r"aa.txt",mode="rb") as f:
  res = f.read()
  data = res.replace("aa","bb")

with open(r"aa.txt",mode="wb") as f:
  f.write(data)

# 方法2:创建新文件,写入到新文件,删除源文件,更改新文件名称
# 优缺点:占用硬盘,不占内存
import os
with open(r"aa.txt",mode="rb") as f,\
    open(r".aa.txt.wrap",mode="wb") as f1:
  while 1:
    info = f.read(1024)
    if len(info) == 0:
      break
    else:
      f1.write(info)
os.remove('aa.txt')
os.rename('.aa.txt.warp','aa.txt')
posted @ 2022-10-31 09:48  转角90  阅读(33)  评论(0编辑  收藏  举报