文件操作的几种常用方式

文件操作的几种常用方式,看起来有很多类型,然而无非是三种,读(r),写(w),追加(a),主要简单介绍下这几种常用方式。

更多学习链接:https://www.nhooo.com/python/python-file-operation.html

一、各模式逐个分解

    1.‘r’:只读,该文件必须已存在
    2.‘r+’:可读可写,该文件必须已存在,写为追加在文件内容末尾
    3.‘rb’:表示以二进制方式读取文件,该文件必须已存在
    4.‘w’:只写,打开即默认创建一个新文件,如果文件已存在,则覆盖写(即文件内原始数据会被新写入的数据清空覆盖)
    5.‘w+’:写读,打开创建新文件并写入数据,如果文件已存在,则覆盖写
    6.‘wb’:表示以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,则覆盖写
    7.‘a’:追加写,若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建新文件
    	只能执行写(追加在后面),不能读
    8.‘a+’:追加读写,打开文件方式与写入方式和'a'一样,可以读

二、看似那么多模式,实际上无非是三大类:

  • 读r(read),写w(write),追加a(append)。

三、具体实例

  1. 只读模式:r

    with open("test.txt","r",encoding="utf-8") as f:
        print(f.read() )   # 读取所有数据
        print(f.read(4))   # 使用read(size)方法读取指定大小数据,读取前4个数据
        print(f.readline())   # 文件内容首行数据
        print(f.readlines())   # 返回文件中的行列表
        print(f.readable())   # 如果文件是可读的,则 readable() 方法返回 True,否则返回 False
    

    在这里插入图片描述

  2. 可读可写模式:r+

    with open("test1.txt","r+",encoding="utf-8") as f:
       f.write("you are test data")  # 写入数据在文件后面显示
       print(f.seek(0))   # 光标回到文件头
       print(f.read())   # 读取所有数据
    

    在这里插入图片描述

  3. 以二进制方式读取文件模式:rb

    # 二进制文件不需要转码utf-8
    with open("test2.txt","rb") as f:
        print(f.read())   # 读取所有数据
    

    在这里插入图片描述

  4. 只写模式:w

    # 只写模式下去读会报错
    with open("test3.txt","w",encoding="utf-8") as f:
        f.write("这是只写模式下-写入的数据")
    
  5. 写读模式:w+

    with open("test4.txt", "w+", encoding="utf-8") as f:
        f.write("这是写读模式下-写入的数据:read()方法将换行符返回")
        f.seek(0)       # 光标回到文件头
        print(f.read())  # 读取所有数据
    

    在这里插入图片描述

  6. 以二进制方式读写文件:wb

    with open("test5.txt", "wb") as f:
        f.write("dfdfd:sdsdsds".encode("utf-8"))
        f.seek(0)
        print(f.read())
    

    在这里插入图片描述

  7. 追加写模式:a

    with open("test5.txt", "a",encoding="utf-8") as f:
        f.write("追加写模式:hfghfghgfhgfhfg")
    
  8. 追加读写模式:a+

    with open("test5.txt", "a+",encoding="utf-8") as f:
        f.write("追加写模式:hfghfghgfhgfhfg")
        f.seek(0)         # 光标回到文件头
        print(f.read())   # 读取数据
        
    	# 其他方法:
        print(f.tell())  # 打印当前指针位置
        print(f.encoding)  # 打印当前使用的字符编码
        print(f.name)  # 打印文件名
        print(f.flush())  # 刷新
        f.truncate(12)  # 从头开始,第12个字符后截断并清除
        f.close()  # 关闭文件
    

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值