• 软件测试/测试开发丨Python文件操作 学习笔记


    点此获取更多相关资料

    本文为霍格沃兹测试开发学社学员学习笔记分享
    原文链接:https://ceshiren.com/t/topic/27721

    文件操作

    • 在程序中操作文件和使用图形界面操作文件的过程基本一致,都要进行找到文件位置,打开文件,读写文件,关闭文件等操作。

    1、打开文件

    • Python 使用 open 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
    • 完整格式:
    open(filename, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    
    • 1
    • 简化格式:open(filename, mode='r', encoding=None)

      • filename: 必需,指定打开文件的路径(相对或者绝对路径);
      • mode: 可选,文件打开模式,默认为r只读模式;
      • encoding: 一般使用 utf8
    • mode参数常见下表:
      image

    2、关闭文件

    • 文件在操作完以后,需要将其关闭,close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。
    • close() 方法允许调用多次。
    • 格式:fileObject.close()

    3、写入文件

    • fileObject.write( str ): 用于向文件中写入指定字符串。如果文件打开模式为b ,则要将字符串转换成 bytes 类型的二进制字符串,函数返回成功写入数据的长度
    # 以写入文件打开 index.html 文件
    file = open("index.html", "w")
    # 写入数据
    result1 = file.write("

    文件写入标题

    "
    ) result2 = file.write("\n") result3 = file.write("

    文件写入内容。。。。。。

    "
    ) print("result1=",result1)# result1= 15 print("result2=",result2)# result2= 1 print("result3=",result3)# result3= 19 # 关闭文件 file.close()
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • fileObject.writelines(seq):用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。

      • 注意:不要被方法名所迷惑,如果每个元素独占一行,需要在数据后指定换行符 \n
    datas = ["AAAAAAAAAAAA\n","BBBBBBBBBBBB\n","CCCCCCCCCCCC\n","DDDDDDDDDDDD\n"]
    file = open('data.txt',"w")
    result = file.writelines(datas)
    print("result=",result)# result= None
    file.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4、读取文件

    • fileObject.read(size=-1):用于从文件读取指定的字节数,如果未给定或为负则读取所有
    • 注意光标的位置,连续读取文件没有关闭的时候,光标会随着读取而向后移动,不会回到默认起始位置;
    file = open('data.txt',"r")
    # 读取10个字符
    content = file.read(10)
    print(content)
    # 读取所有内容
    content = file.read()
    print(content)
    file.close()
    ------------------------------
    AAAAAAAAAA
    AA
    BBBBBBBBBBBB
    CCCCCCCCCCCC
    DDDDDDDDDDDD
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • fileObject.readline(size=-1): 用于从文件读取整行,包括 \n 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 \n 字符。
    • 该方法默认读取一行,如果指定了长度,会读取这一行中的给定长度,并且如果文件不关闭,光标也不会回到默认起始位置,再次读取会从光标所在位置读取这一行剩下的内容;
    file = open('data.txt',"r")
    # 读取10个字符
    content = file.readline(10)
    print(content)
    # 读取文件指针所在行剩余所有内容
    content = file.readline()
    print(content)
    file.close()
    ---------------------------------------------
    AAAAAAAAAA
    AA
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • fileObject.readlines():用于读取所有行(直到结束符 EOF)并返回列表
    file = open('data.txt',"r")
    # 以行为单位读取文件所有的内容
    contents = file.readlines()
    print(contents)
    file.close()
    --------------------------------------------------
    ['AAAAAAAAAAAA\n', 'BBBBBBBBBBBB\n', 'CCCCCCCCCCCC\n', 'DDDDDDDDDDDD\n']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5、作业

    作业要求

    编写一个Python程序,将一些文本内容写入到文件中,并且能够从文件中读取内容并显示出来

    """
    作业要求
    编写一个Python程序,将一些文本内容写入到文件中,并且能够从文件中读取内容并显示出来
    """
    
    def file_write(filename,msg,mode='a',encoding='utf8'):
        """
        文件写入方法,支持写入:字符串和一序列的字符串
        :param filename:文件名称
        :param msg:写入内容
        :param mode:文件打开方式
        :param encoding:内容编码
        :return:
        """
        file = open(filename,mode,encoding=encoding)
        if isinstance(msg,str):
            # 写入字符串类型
            file.write(msg)
        elif isinstance(msg,list):
            # 写入序列字符串
            file.writelines(msg)
        else:
            # 关闭文件
            file.close()
            raise Exception("msg type erroe")
         # 关闭文件
        file.close()
    
    def file_read(filename,size=-1,mode='r',encoding='utf8'):
        """
        读取文件,支持读取一行或所有
        :param filname: 文件名
        :param size: -1表示读取所有,
        :param mode: 文件打开方式
        :param encoding: 内容编码
        :return:
        """
        file = open(filename, mode, encoding=encoding)
        if size == -1:
            # 读取所有内容
            content = file.read()
            file.close()
            return content
        elif size == 1:
            # 读取一行
            content = file.readline()
            file.close()
            return content
        else:
            # 关闭文件
            file.close()
            raise Exception("size error")
    
    if __name__ == '__main__':
        # 写入文件
        filename = 'demo.txt'
        # msg = "霍格沃兹测试开发学社\n"
        # file_write(filename,msg)
        # msg = ["AAAAAAAAAAAA\n","BBBBBBBBBBBB\n","CCCCCCCCCCCC\n","DDDDDDDDDDDD\n"]
        # file_write(filename, msg)
    
        # 读取文件
        line = file_read(filename,1)
        print(line)
        all = file_read(filename)
        print(all)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
  • 相关阅读:
    Markdown使用方法
    数据库可视化工具分享 (DBeaver)
    【浙大版《Python 程序设计》题目集(解)】第6章-6 求指定层的元素个数(40分)
    智能钱包 AMA 第 8 期:探索进入市场的策略
    Vue:实现TodoList案例(尚硅谷)
    centos7安装nginx
    「运维有小邓」合规审计报表
    hive-on-spark
    Go WebAssembly 入门
    毕设 仓库管理系统
  • 原文地址:https://blog.csdn.net/Ceshiren666/article/details/133683879