Python 文件操作

文件操作

  • fp 文件io对象

    fp = open(文件名,模式,编码集)
    
    i : input  输入
    o : output 输出
    
    fp.read()  读文件内容
    fp.write() 写文件内容
    
    模式
    w => write
    r => read
    a => append
    
    文件可以存储两种数据格式:
    	(1) 字符串
    	(2) 字节流
    
  • 如何写入文件

    1. 打开文件

      fp = open("lianxi1.txt",mode="w",encoding="utf-8") # 打开冰箱门

    2. 写入内容

      fp.write("大象在家没?") # 把大象踹进去

    3. 关闭文件

      fp.close() # 关上冰箱门

  • 如何读取文件

    <变量名> = open(<文件名> , <打开模式>)
    文件句柄    文件路径和名称    文本or二进制
             源文件同目录可胜路径  读 or 写
    
    1. 打开文件

      fp = open("lianxi1.txt",mode="r",encoding="utf-8")

    2. 读取内容

      res = fp.read()

    3. 关闭文件

      fp.close()
      print(res)

    .read (size = -1)读入全部内容,如果给出参数,读入前size的长度s = f.read(2) 中国
    .readline(size = -1)读入一行内容,如果给出参数,读入改行前size的长度s= f.readline() 中国是一个伟大的国家
    .readlines(hint=-1)读入文件所有行,以每行为元素形成列表,给参数读入前hont行s = f.readlines() [‘中国是一个伟大的国家’]
  • 文件的打开模式

    ‘r’只读模式,默认值,如果文件不存在,返回FileNotFoundError
    ‘w’覆盖写模式,文件不存在则创建,存在则完全覆盖
    ‘x’创建写模式,文件不存在则创建,存在则返回FileExistsError
    ‘a’追加写模式,文件不存在则创建,存在则在文件最后追加内容
    ‘b’二进制文件模式
    ‘t’文本文件模式,默认值
    ‘+’与r/w//x/a一同使用,在原功能基础上增加同时读写功能
  • 字节流的概念

    字节流是用来数据传输和存储的一种数据格式,实际上就是二进制;
    多个字节放在一起是字节流
    多个字符放在一起是字符串
    表示: 在字符串的开头放一个b
    	例如: b"123"  , b"abc"  [必须归属于ascii编码才可以的,字符串前面加b]
    	error: b"你好" 错误的
    	
    str_bytes = b"abc"
    print(str_bytes , type(str_bytes)) # b'abc' <class 'bytes'>
    
  • 将字符串和字节流(Bytes流)类型进行转换 (参数写成转化的字符编码格式)
  • encode() 编码 将字符串转化为字节流(Bytes流)
  • decode() 解码 将Bytes流转化为字符串
    strvar = "你好".encode("utf-8")
    print(strvar , type(strvar))
    
    res = b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode("utf-8")
    print(res , type(res))
    
    res = b"\xe5\xa5\xbd".decode("utf-8")
    print(res , type(res))
    
  • 存储二进制的字节流

    1. 写入二进制字节流
      无需重新指定encoding,加了反而报错
      fp = open("lianxi2.txt",mode="wb")
      fp.write(  "你好".encode("utf-8")   )
      fp.close()
      
    2. 读取二进制字节流
      fp = open("lianxi2.txt",mode="rb")
      data = fp.read()
      fp.close()
      print(data.decode())
      
  • 如何复制一张图片?

    1. 读取原图片中的二进制字节流
      fp = open(r"E:\python35\day9\集合.png",mode="rb")
      data = fp.read()
      fp.close()
      print(data)
      
    2. 把字节流写入到新的文件中
      fp = open("集合4.gif",mode="wb")
      fp.write(data)
      fp.close()
      
  • with 语法 => 可以自动完成close操作

    with open(r"E:\python35\day9\集合.png",mode="rb") as fp:
    	data = fp.read()
    	
    with open(r"E:\python35\day9\集合123.png",mode="wb") as fp:
    	fp.write(data)
    
    升级
    with open(r"E:\python35\day9\集合.png",mode="rb") as fp1,open(r"E:\python35\day9\集合123.png",mode="wb") as fp2:
    
    data = fp1.read()
    fp2.write(data)
    

文件的理解

  • 文本文件和二进制文件知识文件的展示方式

  • 本质上, 所有文件都是二进制形式存储

  • 形式上, 所有文件采用两种方式展示

  • 由单一特定编码组成的文件, 如utf - 8 编码

  • 由于存在编码,也被看成是存储着的长字符串

  • 适用于例如: txt文件 py文件

  • 直接由比特0和1组成, 没有统一字符编码

  • 一般存在二进制0和1组成,没有统一字符编码

  • 适用于例如:png文件 avi文件

f.txt文件保存: “中国是一个伟大的国家”

# 文本形式打开文件
tf = open("f.txt", "rt")
print(tf.readline())
tf.close()
# 中国是一个伟大的国家
# 二进制形式打开文件
bf = open("f.txt","rb")
print(bf.readline())
bf.close()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值