zoukankan      html  css  js  c++  java
  • 文件IO操作二

    一、文件高级及函数基本使用

      X模式(了解)(只写模式;不可读;不存在创建,存在则报错)

      b模式:

    b模式:1.读写都是以bytes格式
          2.可以针对所有文件
          3.一定不能指定字符编码,(即一定不能指定encoding参数)
    
    with open(r'C:UsersWYCDesktop微信图片_20210105145847.jpg',mode='rb') as f:
        f.read()  # 硬盘二进制存入内存,在b 模式下,不做任何改变,是什么样的读出来的就是什么样
    
    with open(r'a.txt',mode='wb') as f:
        f.write('你好,world'.encode('utf-8'))
    #循环读取文件
    #方式一:自己控制每次循环的读取量
    with open(r'IMG_1279.PNG',mode='rb') as f:
        while True:
            res = f.read(1024)  # 以1024个字节读取文件
            if len(res)==0:
                break
            print(len(res))
    
    # 方式二:以行为单位读取,当一航文件内容过大时,内存会过载
    with open(r'IMG_1279.PNG',mode='rb') as f1:
        for line in f1:
            print(len(line),line)

    二、其他操作方法

    读相关操作
      # 内容过大时,容易导致内存溢出
    with open(r'a.txt',mode='rt',encoding='utf-8') as f:
        # res=f.readline()  # 一次只读一行
        # print(res)
        # res1=f.readlines()  # 多行一起读,生成一个列表,
        # print(res1)
    
    #写相关操作
    with open(r'a.txt',mode='wt',encoding='utf-8') as f:
    
        # l=['123
    ','234
    ','14314
    ']  # 如果是纯英文,可以直接加前缀b得到bytes类型
        # l=[b'123',
        #    b'234',
        #    b'14314']
    #  如果有其他字符
        l = [
            bytes('你好',encoding='utf-8'),
            bytes('中国',encoding='utf-8'),
             ]
        f.writelines(str(l))  # 相当于一个列表
    
    控制文件指针操作:
    指针移动的单位都是以bytes/字节为单位
    只有一种特殊情况:t模式下的read(n),是以字符为单位移动的(n)代表字符个数
    
    f.seek():
    f.seek(n,模式:n指的是移动的字节个数
    模式:  0 参照物是文件的开头位置(只有0模式可以在t模式下使用);
          1 参照物是当前位置;
          2 参照物是文件末尾位置,移动时需要倒着移动
    
    f.tell  # 告诉你指针当前位置
  • 相关阅读:
    JSON2 源代码
    C#冒泡排序详解
    SqlHelper 带详细中文注释
    js-cookie
    淘宝镜像(cnpm) 安装
    vue全局刷新
    webpack-npm安装-查看当前版本
    半环进度条
    Parameter 'name' implicitly has an 'any' type.
    vue3.0-如何切换路由-路由模式ts
  • 原文地址:https://www.cnblogs.com/Holmes-98/p/14238478.html
Copyright © 2011-2022 走看看