zoukankan      html  css  js  c++  java
  • python01之文件处理

      在计算机的世界里,我们存储数据的地方,如计算机的内存,数据库,计算机磁盘。相比较三种存储的方式。各有利弊,存储在计算机的内存中,计算取数据的时候速度很快。但是他的存放的周期只能是在成效运行的时间内。存储在数据库和计算机磁盘中可以保存的时间很长,只要不是人为的删除或者是计算机损坏。数据都可以找到。但是如果程序用到的时候,就需要先将数据读取到计算机的内存之中。这样就会花费很多的时间。

      文件就是将数据存在计算机磁盘的方式。我们可以通过使用代码操作实现对文件的读写操作。

    文件的打开:

    def open(file, mode='r', encoding=None):

    file :代表我们需要打开的文件名的路径。ps文件路径可以使用相对路径和绝对路径。 相对路径是相对于项目工作的目录而言,绝对路径是相对于计算机磁盘而言。相比较推荐使用相对路径。

    mode :表示我们对文件进行的操作

    模式

    解释注意
    “r”读取(默认值)打开文件进行读取,如果文件不存在则会报错
    “a”追加打开供追加的文件,如果文件不存在这会创建文件
    “w”写入打开文件进行写入,如果文件不存在则会创建改文件
    “x”创建创建指定的文件,如果文件存在就会返回错误
    “r+”读写文件指针将会放在文件的开头。
    "w+"读写如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    “a+”读写如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

    此外,我们还可以指定文件读取和写入的方式是二进制还是文本模式:

    •  “t”     txt的首字母---文本--默认值,文本模式。实现对文件进行字符串的读写。
    •  “b”    binary的首字母---二进制---二进制模式,在对文件进行操作的时候,用二进制的方式。如对图像进行读写的时候。

    ex:

    fp = open(“text.txt”)  

    以上代码等同于:

    fp = open(“text.txt”,'rt'#实现对text文件的对字符串模式的读操作

    文件的关闭:

      文件操作结束之后,我们应该将打开的文件指针关闭。一是释放缓存,如果不关闭流会造成内存泄露。二是,如果存在写操作,有些是在缓存中还没真正写道磁盘文件中,关闭流的时候回刷新缓存,真正将数据写到磁盘文件中。

    文件的读:

    文件打开之后我们要使用以下方式实现对文件内容的读取:

    content = fp.read()  #讲文件内的所有文件读取到内存中。

    这个读取方式有一个问题就是:当需要读取的文件超级大的时候回导致计算机的运行内存卡顿或者程序崩溃。(ps:文件读取是先将文件读取到计算机的内存中),对于这个问题我们可以给read()函数传一个参数,指定我们每一次读取文件的 大小。

    content = fp.read(N)    #N指我们每一次要读取的文件的大小,N一般取1024

    有时候还可以使用

    1. readline()  一次读取文件的一行内容读到换行符结束。

    2. readlines()     一次读取多行文件。ps:可以给函数传参数,指定需要读取的行数。

    文件的写:

    我们在对数据进行操作之后,就需要将文件写入到文件之中。

    fp.write(content)             #将内容写到文件之中。

    content:可以是我们从另一个文件读取到的内容。也可以是我们自己生成的文件。写入的时候我们需要注意的一个问题,就是我们打开文件的方式和我们需要写入文件的格式是否一致。

    同样的还可以使用

    1. writelines()  实现一次向文件中写入多行数据。

  • 相关阅读:
    [LeetCode]Binary Tree Level Order Traversal
    [LeetCode]Binary Tree Postorder Traversal
    Netty(六):NioServerSocketChannel源码解析
    Netty(五):ServerBootstrap启动流程
    Netty(四):AbstractChannel源码解析
    Netty(三):IdleStateHandler源码解析
    自定义fastjson对枚举类型的序列化及反序列化过程
    TCP连接过程及报文解析
    Netty(二):数据在ChannelPipeline中的流经
    Netty(一):ByteBuf读写过程图解
  • 原文地址:https://www.cnblogs.com/zyihang/p/13256355.html
Copyright © 2011-2022 走看看