• Python小白学习之路(十九)—【文件操作步骤】【文件操作模式】


    一、文件操作步骤

    step1:打开文件,得到文件句柄并赋值给一个变量
    step2:通过句柄对文件进行操作
    step3:关闭文件

    举例:
    
    a = open('hello world', 'r', encoding = 'utf-8')    #打开 ‘hello world’ 文件,得到文件句柄并赋值给一个变量 a
    data = a.read()    #通过句柄对文件进行读操作 
    a.close()    #关闭文件

    注意事项一:

    关于 a.close() 关闭文件

    打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。
    在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为:

    1、f.close() #回收操作系统级打开的文件
    2、del f #回收应用程序级的变量

    其中del f一定要发生在f.close()之后,否则就会导致操作系统打开的文件还没有关闭,白白占用资源。
    而python自动的垃圾回收机制决定了我们无需考虑del f。
    这就要求我们,在操作完毕文件后,一定要记住f.close()

    简单的来说,每 open() 一个文件,就要求我们必须 close()


    用关键字 with ,可以使用 close()

    with open('hello world', 'r', encoding = 'utf-8') as a:
    data = a.read()
    print(data)
    
    等同于
    
    a = open('hello world', 'r', encoding = 'utf-8')
    data = a.read()
    print(data)    
    a.close()

    注意事项二:

    关于 open() 文件时编码方式的问题

    如果我们在 open() 文件的时候不说明编码方式的时候,系统默认的是按照操作
    系统的编码方式来(windows操作系统编码方式是gbk,linux操作系统编码方式是utf-8)
    所以为了避免不乱码、不报错 文件以什么编码方式保存的,就要以什么编码方式打开

    二、关于文件操作模式

    r,只读模式【默认模式,文件必须存在,不存在则抛出异常】
    w,只写模式【不可读;不存在则创建;存在则清空内容】
    a,追加写模式【不可读;不存在则创建;存在则只追加内容】

    1.‘r’ 只读模式

    open() 文件时,如果不指定操作方式,默认为只读模式

    读操作的相关函数:

    .read()

    功能:对文件进行读操作,读取全部文件全部内容

    .readable()


    功能:判读文件是否可读

    举例:
    
    a = open('helloworld', 'r', encoding = 'utf-8')
    date = a.read()
    print(date)
    print(a.readable()) #判断文件是否可读,是的话返回True
    a.close()
    
    a = open('helloworld', 'w', encoding = 'utf-8')
    print(a.readable()) #判断文件是否可读,否的话返回True
    a.close()

    .readline()

    功能:读取文件的一行内容

    举例:
    a = open('helloworld', 'r', encoding = 'utf-8')
    print(a.readline())
    print(a.readline())
    print(a.readline())
    a.close()
    
    #执行结果:
    aaaaa
    
    bbbbb
    
    ccccc
    #获取的每一行中间会有一个空白行间隔,那是因为每一行默认有一个换行符
    #通过以下方式可以去掉间隔行
    
    a = open('helloworld', 'r', encoding = 'utf-8')
    print(a.readline(),end = '')
    print(a.readline(),end = '')
    print(a.readline(),end = '')
    a.close()
    #执行结果
    aaaaa
    bbbbb
    ccccc

    .readlines()

    功能:读取文件每一行内容,并将每一行内容存放在一个列表里

    举例:
    a = open('helloworld', 'r', encoding = 'utf-8')
    print(a.readlines())
    a.close()
    
    #执行结果
    ['aaaaa
    ', 'bbbbb
    ', 'ccccc
    ', 'ddddd']

    2.‘w’ 只写模式

    在写模式下,执行文件
    如果文件存在,将文件内容清空再执行其他操作
    如果文件不存在,新建该文件


    写操作的相关函数

    .write()

    功能:针对文本模式的写,需要自己写换行符

    举例:
    a = open('helloworld', 'w', encoding = 'utf-8')
    a.write('aaaa
    ')
    a.write('bbbb
    ')
    a.close()
    #将文件内容清空,在执行写操作

    .writelines()

    功能:以列表形式写文件

    举例:
    a = open('helloworld', 'w', encoding = 'utf-8')
    a.writelines(['aaaa
    ', '1111
    '])
    a.close()

    .writeable()

    功能:判断文件是否可写

    举例:
    a = open('helloworld', 'w', encoding = 'utf-8')
    print(a.writable())
    a.close
    
    #执行结果
    True

    注意:
    在给文件写内容是,写的参数必须是字符串类型,如果写入其他类型会报错


    3.‘a’模式 追加写模式

    举例:
    a = open('helloworld', 'a', encoding = 'utf-8')
    a.write('追加到最后一行')
    a.close()

    任务:
    打开一个文件,保留其第二行内容

    src_f = open('helloworld', 'r', encoding = 'utf-8')
    data = src_f.readlines()
    src_f.close()
    print(data)
    dst_f = open('helloworld', 'w', encoding = 'utf-8')
    dst_f.write(data[1])
    dst_f.close()

    写在后面:

    最近都好忙,在忙着发学院会议论文、忙着发ccc会议论文、忙着写开题报告、忙着投专利

    总感觉自己效率不是很高

    自己也一直想办法  努力提高自己效率

    好好加油吧

    不要在忙碌中迷失了自我

    不要忘记最初的梦想

    我觉得,最可贵的事情  就是在不断的成长过程中

    保持那颗善良的心  坚持自己的梦想

    一直想去大城市闯闯

    虽然过来的人总和我说   一个人在外  太不容易  

    我好想一直就是个倔强的人

    我一直想证明  我是一个厉害的小伙郭

    加油啦

  • 相关阅读:
    jekins接通gitee的webhook做自动部署 vue、react、java、springBoot
    vue可复用性 & 组合
    vite使用短链接
    Ubuntu12.04(X86_64)上安装Mesa8.0.4
    回调函数
    c#隐式转换
    OpenGL ES2 的OffScreen实现
    Catch exception from other thread
    C# []、List、Array、ArrayList 区别及应用
    redhat update
  • 原文地址:https://www.cnblogs.com/guoruxin/p/9967750.html
Copyright © 2020-2023  润新知