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  # 告诉你指针当前位置
  • 相关阅读:
    Hibernate save, saveOrUpdate, persist, merge, update 区别
    Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
    Neo4j批量插入(Batch Insertion)
    嵌入式(Embedded)Neo4j数据库访问方法
    Neo4j 查询已经创建的索引与约束
    Neo4j 两种索引Legacy Index与Schema Index区别
    spring data jpa hibernate jpa 三者之间的关系
    maven web project打包为war包,目录结构的变化
    创建一个maven web project
    Linux下部署solrCloud
  • 原文地址:https://www.cnblogs.com/Holmes-98/p/14238478.html
Copyright © 2011-2022 走看看