zoukankan      html  css  js  c++  java
  • python--IO模块(系统整理)(持续更新)

    一,为什么需要IO操作?

      实际开发中,经常需要从外部存储介质中读取数据,或者将程序产生的数据存储到文件中,实现“持久化存储”。很多软件系统是将数据存储在数据库中,而数据库实际也是基于文件形式存储的

    二,文本文件和二进制文件

      文本文件:文本文件存储的是普通“字符”文本,默认为unicode字符集,可以使用记事本程序打开。(注意:像word软件编辑的文档不是文本文件)

      二进制文件:二进制文件把内容用“字节”进行存储,无法用记事本打开

    三,常见模块

      io,os,glob,fnmatch,fileinput,filecmp,cvs,pickle和cpickle,xml

    四,创建文件对象(open函数,具体语法就不讲了,这里讲讲内存方面的东西)

      1,python中,万物皆对象。open函数会创建文件对象。我们对文件对象的操作,是通过文件流同步到真实的文件中的。

      2,文本文件的写入分为三个步骤,创建文件对象;写入数据;关闭文件对象

        注意:-python解释器是运行在内存中的,而对磁盘中的文件进行同步是需要操作系统来完成的。关闭文件对象可以释放操作系统中被占用的资源

           -write:写入字符串     writelines:将字符串列表写入文件中,不添加换行符

           -当我们写入数据时,首先会将数据写入文件对象的缓冲区中(此时文件中并没有同步)。当调用close()方法时,会先将缓冲区数据写入到文件(也可以直接调用flush()方法),再关闭文件,释放文件对象

      3,中文乱码问题是因为编码和解码所有的标准不一致导致的。

        注意:Windows操作系统默认的编码是GBK,Linux操作系统默认的编码是UTF-8。例如:当我们调用file.write()写入Unidcode字符时,由于python解释器是通过操作系统来写入到文件中的,所以写入文 件时(编码过程)用的是GBK,而一般txt文本显示时(解码过程)采用的是utf-8解码,这时候就会出现乱码

      4,为了确保打开的文件对象正常关闭,一般结合异常机制的finally或者with关键字实现无论何种情况都能关闭打开的文件对象

        -finally

          try:

            .......

          except ...as...:

          finally:

            .....

        -with语句(上下文管理器):with关键字实际上是自动的管理上下文资源,无论什么原因跳出with块,可以代码块执行完毕之后自动还原进入该代码块时的现场,从而都能确保文件的正常关闭

      8, enurmerate()函数(具体用法见百度)

    五,文本文件的常见属性和方法(文本文件的常见操作就是 读取和写入)

      1,常见属性

        name,mode,closed

      2,写入操作

        write(str),writelines(s)

      3,读取操作

        read(size),readline(),readlines()

      4,其他操作

        seek(offset [,whence ]),tell(),truncate([size]),flush(),close()

      5,使用迭代器读取文本文件

    with  open() as  f :

      for  a  in  f:

        print(a)

    六,使用pickle进行序列化和反序列化

      序列化:对象-----硬盘

      反序列化:硬盘-----对象

      

      序列化时:

        pickle.dump(obj,file) # obj就是要被序列化的对象,file指的是存储的文件
        pickle.load(file) # 从file读取数据,反序列化成对象

        注意:反序列化时要注意序列化时的顺序,按什么顺序写入,就按什么顺序读取出来

     七,csv文件的读取和写入

      什么是csv文件?

        csv是逗号分隔符文本格式,常用于数据交换,Excel文件和数据库数据的导入和导出。csv与excel文件的不同如下:

          -值没有类型,所有的值都是字符串

          -不能指定字体颜色等样式

          -不能指定单元格的宽高,不能合并单元格

          -没有多个工作表

          -不能嵌入图像图表

      读取和写入csv文件(使用csv模块):

    import csv

    #读取csv文件
    with open("dd.csv","r") as f:
        a_csv = csv.reader(f) #创建csv读取器
        list(a_csv) 
    #写入csv文件
    with open("ee.csv","w") as f:
        b_csv = csv.writer(f)   #创建csv写入器
        b_csv.writerow([])  #写入单个列表
        b_csv.writerows([[]])   #写入多个列表


  • 相关阅读:
    区块链python演示
    网页H5图片预览滑动模仿新浪微博插件
    AngularJS
    实现A Painless Q-learning Tutorial (深度学习笔记二)
    python线性拟合数据(深度学习笔记一)
    雪花特效登录页面
    ASP.NET Core中使用NLog记录日志
    EFCore中代码优先锲约和数据类型与数据库的对应关系
    所有数据库连接字符串示例
    看到12_234_678差点怀疑人生的事儿
  • 原文地址:https://www.cnblogs.com/RosemaryJie/p/13985669.html
Copyright © 2011-2022 走看看