• python基础-第四篇-4.2文件操作


    基本打开模式

    • 文件操作的流程:打开文件,操作文件,关闭文件
    • 打开文件方法:open(文件名,模式,编码)
    • file = open(‘文件名’) 模式在不给值的情况下,默认为只读,而且如果是非当前的目录下文件名要加绝对路径

      

      ‘r’--只读

    • file_name.read()   一次性把指针后的内容全部读出来

      

    • file_name.readlines()  把指针后内容,以列表的形式每行读出

        

    f = open('ha.log','r')
    data1 = f.readlines()
    f.close()
    print(data1)
    #结果为:['that is good!
    ', 'nice to meet you!
    ', 'hello kitty!
    ']
    
    f = open('ha.log','r')
    f.seek(5)
    data2 = f.readlines()
    f.close()
    print(data2)
    #结果为:['is good!
    ', 'nice to meet you!
    ', 'hello kitty!
    ']
    
    •  file_name.readline()  每一次读一行内容

      

    • 文件里循环读取,循环文件默认是循环行内容
    f = open('ha.log','r')
    for line in f:
        print(line)
    f.close()
    #结果为:
            that is good!
            
            nice to meet you!
            
            hello kitty!
    

      'r'模式总结:只读模式在打开文件时是从头开始读,其中read()和readlines()是一次把文件所有内容都读取出来,在文件很大时,不建议这两种方法,非常占内存

           而readline和循环文件是一行一行读,两次方法每次读取都是只占一行内容的内存,readline操作比较繁琐,并且你如果不知道最后一行在哪,一般容易报错,

           一般用for循环

      ‘w’--只写

    • 以只写模式打开时,先检测文件存不存在,不存在就创建,存在清空文件内容

      

    • file_name.writelines()  和只读里的readlins相对应,以列表形式写入
    f = open('ha.log','w')
    f.writelines(['that is good!
    ', 'nice to meet you!
    ', 'hello kitty!
    '])
    f.close()
    
    f = open('ha.log','r')
    data = f.read()
    f.close()
    print(data)
    结果为:
            that is good!
            nice to meet you!
            hello kitty!
    

      ‘w’模式总结:只写模式适用于创建不存在的文件,用于清空内容再写入内容情况比较少,如果说想在文件末尾添加内容,这就涉及到我们即将讲的‘a’模式

      ‘a’--追加模式

    • 打开文件时,指针跳到文件的末尾,此时执行写操作就是内容添加操作
    • 追加模式下不可读,不存在则创建,存在则追加
    f = open('ha.log','a')
    print(f.tell())
    f.write('大家好')
    f.close()
    
    f = open('ha.log','r')
    data = f.read()
    f.close()
    print(data)
    结果为:
            48
            that is good!
            nice to meet you!
            hello kitty!
            大家好
    

      ‘x’--只写

    • 不存在创建,存在则报错(这个模式py3新增的)    --用于判断文件存不存在非常有用

      

    字节打开模式

    • 别看我们平时操作都是能看懂的字符串,其实在程序底部都是一些计算机能识别的二进制文件,所以让我们看懂,必须经过一个编码转换区,由字节转换为字符

      

      'rb'--字节只读模式

      

      'wb'--字节只写模式

      

    文件操作指针

    • file_name.seek()  指针拨到指定位置
    • file_name.tell()  告诉你当前指针的位置

      

    • r+ 读写--从0开始
    • w+ 写读--写把文件清空,从0开始
    • a+ 写读--指针从末尾开始
    • x+ 写读--存在报错,从0开始

       

      

    with open('ha.log','w') as f:
        f.writelines(['大家好才是真的好
    ','明天的太阳依旧灿烂
    '])
    
    #打开以a+模式,如果先写,是从当前指针开始往后覆盖内容
    with open('ha.log', 'r+') as f:
        print(f.tell())  #0
        f.write('早起的鸟儿有虫吃
    ')
        f.seek(0)
        data3 = f.read()
        print(data3)
    # 结果为:
    #     早起的鸟儿有虫吃
    #     明天的太阳依旧灿烂
    

    文件上下文管理

    • with open(’文件名‘,模式) as 文件变量:文件操作---------这种方式不用再写文件关闭了,因为这种方式在操作后会自动关闭文件
    • 在py3还支持同时打开两个文件:with open(文件1,模式) as obj1,open(文件2,模式) as obj2:文件操作

      大型文件复制:

    with open('ha.log','r') as obj1,open('ha2.log','w') as obj2:
        for line in obj1:
            obj2.write(line)
    
    with open('ha2.log','r') as obj2:
        data = obj2.read()
        print(data)
    

    文件操作常用方法拾遗

    • file_name.flush()  强行把内存刷到硬盘
    • file_name.truncate()  保留指针前的内容
    with open('ha2.log','a+') as obj1:
        obj1.seek(6)
        obj1.truncate()
        obj1.seek(0)
        data = obj1.read()
        print(data)  #结果为:大家好
    

                                                       欢迎大家对我的博客内容提出质疑和提问!谢谢

                                                                                 笔者:拍省先生  

  • 相关阅读:
    java-反射
    java-异常
    Jmeter-逻辑控制器
    Jmeter-断言
    java-函数传参
    怎么测试一个杯子
    java+selenium3-元素定位
    java+selenium3-简介及环境搭建
    微软企业库5.0 使用举例
    数据库连接字符串ConnectionString 中的关键字值释义
  • 原文地址:https://www.cnblogs.com/xinsiwei18/p/5551191.html
Copyright © 2020-2023  润新知