• 文件操作模式


    一、文件的操作模式

    a模式:追加写入

    # temp.txt
    # 111222333 ​
    
    with open('temp.txt', 'a', encoding='utf-8') as f:     
      f.write('new msg')      # 结果:111222333new msg ​ ​

    文件的复制:就是先读再写

    # 文本类型文件的复制
    
    r = open('source.txt', 'r', encoding='utf-8')
    w = open('target.txt', 'w', encoding='utf-8')
    
    for line in r:  # 遍历就是一行一行读 取读文件的流     
      w.write(line)     
      w.flush()  # 将写入到内存中的数据刷新到硬盘中
    
    w.close()
    r.close() ​ # 1.将内存中剩余的数据刷新到硬盘中,2.释放文件资源
    
    

    with open:将文件的释放交给with管理

    with open('文件', '模式', encoding='utf-8') as f:     
      pass# 操作   

    示例:文件追加

    with open('source.txt', 'r', encoding='utf-8') as f1:     
      with open('target.txt', 'a+', encoding='utf-8') as f2:    
        
    for line in f1:       f2.write(line) ​ ​

    如果复制非文本类型的数据文件?

      从模式采用b模式,不需要关心编码问题

    with open('source.mp4', 'rb') as f1:     
      with open('target.mp4', 'wb+') as f2:  # rb+ | wb | wb+ | ab | ab+       
    
         for line in f1:             
          f2.write(line) ​ ​

    模式汇总

    主模式:

    r: 读
    w: 写(无创建,有清空)
    a: 追加(文件不存在则创建)
    x: 新建写(文件存在则报错) ​​

    从模式:不能独立存在

    t: 文本操作(默认模式)  r=>rt w=>wt a=>at
    b: 非文本文件必须采用二进制模式来处理
    +: 可读可写 ​

    文件操作模式:

    r+: 不会创建文件的可读可写
    w+:创建清空文件的可读可写
    a+:创建不清空文件(追加)的可读可写

    rb: 二进制读
    wb:创建清空文件的二进制写
    ab: 创建不清空文件(追加)的二进制写

    rb+ | wb+ | ab+

    二、游标操作

    必须在b模式下操作,seek中偏移的是字节

    1. 如何使用游标:游标的相关方法

    2. 游标相关的读写操作

    3. 根据游标在大文件中取出多个指定位置的部分字节内容      #百度网盘 - 秒传

      

    seek(偏移量, 偏移位置)

    偏移量:移动的字节数,是结合模式1,2偏移,负数往左(开头)移动,正数往右(末尾)移动

    偏移位置:

    0 -- 文件开头(0:兼容t模式)
    1 -- 当前位置
    2 -- 文件末尾

    with open('source.txt', 'r+', encoding='utf-8') as f:
        f.read()
        print(f.tell())  # 获取游标位置:2620(文件末尾)
        f.seek(0, 0)     # 将游标移动到文章开始
        print(f.tell())  # 0

      

    脚本文件:直接用python解释器运行该文件
    文件test.py
    import sys
    # sys.argv: 存放当前文件作为脚本文件执行的参数们,数据类型为<class 'list'>
    print(sys.argv)
    
    pycharm运行:
    ['文件路径	est.py']
    
    cmd: 
    C:UsersASUS>python3 '文件路径	est.py' 参数1 参数2 ...
    ['文件路径	est.py''参数1''参数2',...]
    # 参数以空格分隔,第一个参数为文件路径,后面为传入参数

    裁剪文件:可读可写模式下

    with open('source.txt', 'r+', encoding='utf-8') as f:
        print(f.readable())  # 判断文件是否可读:True
        print(f.writable())  # 判断文件是否可写:True
        f.truncate(10)
    
    # source.txt文件内容
    # 裁剪前:1234567890*****
    # 裁剪后:1234567890
  • 相关阅读:
    获取ocx运行路径的另一种方法
    使用D3D渲染YUV视频数据
    C++(MFC)中WebBrowser去除3D边框的方法(实现IDocHostUIHandler接口)
    ActiveX控件的安全初始化和脚本操作 和 数字签名SIGN
    解决Eclipse中的卡死现象
    Http请求头和响应头
    HTTP请求头与响应头
    centos7 Mariadb5.5升级到Mariadb10.2
    window下利用navicat访问Linux下的mariadb数据库
    在Linux上安装及配置MariaDB
  • 原文地址:https://www.cnblogs.com/zhouyongv5/p/10620701.html
Copyright © 2020-2023  润新知