• Python---文件操作


    一、文件—永久保存数据

      我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。

    二、Python文件操作介绍

      下面会从文件的读写,以及修改去介绍python如何操作文件,首先先介绍,python的文件操作语法。

    f = open('文件路径',mode = 'r',encoding='utf-8')
    f.close()

    常用语法如上,首先需要填写要操作文件的路径,然后选择mode(模式),常用的模式有r(读),w(写),r+(读写),w+(写读),

    a(追加写),还有b模式(bytes模式)的读写方法

    1、读模式(r)

      在读模式前需要自己创建一个文件,然后找到路径以及确认文件的编码方式才能成功读到文件内容。下面以创建的文本,文件操作1.txt为例,路径为H:文件操作1.txt  。文本内容如下:

    f = open('H:文件操作1.txt',mode='r',encoding='gbk')
    g = f.read()  
    print(g)
    f.close()

    如上所示,我们选择r,读模式,编码格式因为我们操作系统是gbk,所以我们将encoding设置为gbk

    运行结果:

    上面介绍的g.read(),是文件读的方法,read是将文本的中的字符串一次性全部读到内存然后赋值给变量,那么大家有没想过,如果文本大小有几个G甚至十几个G,你一次性将内容加载到内存,那么你的电脑内存一下就爆了。所以我们通常采用领一种方式。readline()方式进行读写。

    首先我们手动将上述文本的内容增加至三行。

    f = open('H:文件操作1.txt',mode='r',encoding='gbk')
    print(f.readline())
    f.close()
    #运行结果:恭喜成功读到文件内容1  f = open('H:文件操作1.txt',mode='r',encoding='gbk') print(f.readline()) print(f.readline())
    f.close()
    #运行结果 恭喜成功读到文件内容1  恭喜成功读到文件内容2 f = open('H:文件操作1.txt',mode='r',encoding='gbk') print(f.readline()) print(f.readline()) print(f.readline())
    f.close()
    #运行结果 恭喜成功读到文件内容1  恭喜成功读到文件内容2 恭喜成功读到文件内容3 

    可以发现这样我们每次f.readline都只读取文本中的每行内容。另外前面讲过字符串是可以迭代的,也就是可以使用for循坏。而文本的实质就是存储的字符串,所以文件内容也是可以循坏迭代的,而每次循坏的元素就是每一行的内容:

    f = open('H:文件操作1.txt',mode='r',encoding='gbk')
    for line in f:    #line 对应f中每一行的内容
        print(line)    
    f.close()
    #运行结果: 恭喜成功读到文件内容1 恭喜成功读到文件内容2 恭喜成功读到文件内容3

    细心的同学可以发现打印结果之间都空了一行,是因为文本中每行结尾是有个‘ ’换行符的,print本身也有也有换行符,所以打印出来导致了以上结果。这样我们每次加载到内存的文本内容都是固定一行,就不用担心内存问题了。

    read.lines

    read.lines模式是将文本的每一行作为列表的元素以列表的形式读取出来:

    f = open('H:文件操作1.txt',mode='r',encoding='gbk')
    print(f.readlines())
    f.close()
    #运行结果: ['恭喜成功读到文件内容1
    ', '恭喜成功读到文件内容2
    ', '恭喜成功读到文件内容3
    ', '
    ']

    大家可以发现每个元素的结尾都是 ,也验证了前面用readline()为什么会空格一行的原因

    2、'W'读模式

    w模式:文件不存在则创建,存在则先删除再创建,。什么意思呢,也就是说我们选择w模式打开文件时,如果文件不存在,那么系统则会按照你所输入的文件路径和文件名自动创建该文件,否则就先删除源文件再创建文件。

    f = open('H:文件操作2.txt',mode='w',encoding='utf-8')
    f.write('创建文本成功')
    f.close()

     可以看到文本操作2本来是没有的,是通过w模式根据你输入的路径和文件名创建,f.write()则是添加你要写入文本的内容,内容只能是字符串。

    现在文本操作2已经存在,我们运行以下程序会出现什么情况:

    f = open('H:文件操作2.txt',mode='w',encoding='utf-8')
    f.write('创建文本又成功啦')
    f.close()

    运行结果:

    可以看见用w模式创建文件时,如果原文件存在,则会先删除原文件然后创建同名文件,内容会重新写入。

  • 相关阅读:
    Virtualbox + centos7 实现网络互ping
    什么?https://start.spring.io访问不了,本地搭建一个不就行了
    关系型数据库设计三大范式到底是什么?
    ClickHouse集群搭建(二)
    ClickHouse集群搭建(一)
    适合初学者入门Java程序
    ffmpeg 修改视频封面
    重温于娟对癌症的认知
    Ubuntu18.04 安装jdk1.8
    提交本地代码到github (commit to remote repo)
  • 原文地址:https://www.cnblogs.com/Kingfan1993/p/9468314.html
Copyright © 2020-2023  润新知