• python中的IO操作


    python中的基本IO操作:

    1) 键盘输入函数:raw_input(string),不作处理的显示,与返回。

             input(string),可以接受一个python表达式作为返回,python内部得到计算结果

    2) 文件句柄(file)对象: file对象的创建必须通过open()函数来得到,

        file object = open(file_name, access_mode, buffering)

      file_name, 需要指向的文件的路径,

      access_mode,r,w,a (加号,表示读写权限都有,b表示按二进制格式写入)

              写操作,可以创建文件,但是读操作和追加操作必须是有原文件的基础上的。

      buffering,如果为0,表示系统不会缓存文件内容,为1,表示系统会缓存内容,具体的值,表示缓存具体的大小。

      (rb,与wb的主要区别在,对于换行符的处理,按文本读入的时候, 被自动替换为 ,文本写入的时候, 被自动替换为 ;

        仅仅改变byte流读写的处理,不涉及到程序内部的encode方式;

        很多pkg内部写出的时候,会判读当前os的类型,软件自己处理换行,所以write一般选择wb;

        read操作一般r与rb的结果相同,除非该文件是跨平台的)。

    3) stringio,python在内存中开辟一块文本模式的buffer,可以像文件对象一样操作它。

      StringIO(initial_value = '', newline= ' '),操作与fp类似。  from io  import StringIO

      当调用fp.close的时候,释放当前buffer。

    4) byteio,python在内存中开辟一款bytes类型(二进制格式)的buffer,可以像文件一样操作它。

      ByteIO(initial_value = '', newline=' '),操作与fp类似。  from io import BytesIO

      当调用fp.close的时候,释放当前buffer。

      stringio与byteio类似与C中的malloc,开辟临时buffer的;

      而不是直接在file之间做数据缓存,file是保存在磁盘,速度较慢。

    5) 类文件对象,file-like obj

      socket对象,stdin,stdout等都是类文件对象。

    数据交换输出格式:

    文本文件多用在人机交互的数据交换,一般有doc格式,csv格式;

    对于编程语言回见的数据交换,由于都必须使用同一的格式,所以多是xml,或者json格式类型的文件;

    python内部obj变量的打包:

      1:pickle包,可以对python内置的obj类型,或者自定义的obj进行序列化。

          数据可以保存在file,stringio等各种buffer中。

          dump(序列化到文件)

          load(返回从文件反序列化的对象)

          pickle.dump(d,f).     d = pickle.load(fp)

      2: json包,对python中的各种obj,保存在类文件中,并且按json的格式.

          dump,load函数。

      序列化到文件,一般都按二进制格式进行文件的open与close。 

    file object的属性和方法

    属性:   1) closed,表示文件是否已经被关闭;

        2) mode,表示文件是以何种方式被打开的;

        3) name,表示文件的路径名字;

    方法:   1) close(),关闭文件句柄,同时刷新缓冲区内的信息到文件;

        2) write(),将任何字符串,写入文件,行尾的换行符和原封不动

          writeline(str),将字符串写入文件,

          writelines(seq),参数是列表,自动迭代写入文件

        3) read(count),读出某个大小的字符串,不指定,读取全部;

          readlines(),读取所有行将他们作为一个字符串列表返回,包含 ;

          readline(),读取打开文件的一行,包括行结束符,作为字符串返回

        4) flush(),从内存中,刷新文件;

        5) next(), 返回文件中的下一行;

        6) tell(),返回当前文件对象的位置(不以行为单位);

        7) seek(offset, where),设置文件对象的位置;0表示文件开始,1表示当前位置,2表示文件结尾

    文件的open与close必须是对称的,如果文件读写过程中,出现问题,之后的close就执行不到,所以为了解决这个问题,

      多使用try,,,finally,来操作文件;

        try:

          f = open('./../../1.txt',  'r')

          print (f.read())

          ....

        finally:

          if f:

            f.close()

    这样来保证file的close,但是这样的书写太过繁琐,所以python引入了with的用法:

      with open('./../1.txt', 'r') as f:

        print (f.read()) 

    这样在with这个复合语句中,调用file object,之后会被自动close,

    如果要访问每一行的内容,可以有两种写法

      1) for line in f.readlines():     #readlines()返回的是一个list

         ......

      2) for line in f:       #file object有next函数,是iterable的

         ....

    文件的编码格式有字节编码,与二进制编码。

      二进制编码多用在编程语言之间进行数据交流;字节编码多用在人机交互。

      二进制编码多用在机器程序,图片(bmp),视频文件(mkv)的描述,二进制编码本身比较节约资源。

        不能直接可见,需要特殊的解释器来进行翻译。

        基于值编码,不同的文件格式之间,完全没有关系。

      字节文件,从最初的ASCII编码,到utf8/16/32(文件头的bom格式来标记文件是哪一种utf编码),将nbit的数字与特定的字符一一绑定。

        基于byte的定长编码,来方便解析。直接可见。

  • 相关阅读:
    vue element-ui 动态上传
    vue element ui 导航刷新 is-active
    算法图解笔记
    简单操作的一些小技巧
    大话数据结构 -07-1 图的定义、抽象数据类型与存储结构
    ELO kernels 记录
    [2] day 02
    [1] first day
    大话数据结构 -04-3 队列
    大话数据结构 -04-2 栈的应用-递归
  • 原文地址:https://www.cnblogs.com/-9-8/p/8244547.html
Copyright © 2020-2023  润新知