• python学习(十一) 文件和流


    11.1 打开文件


      >>> f = open(r'c: extsomefile.txt'),  第一个参数是文件名,必须有;第二个是模式;第三个参数是缓冲。

      11.1.1 文件模式

      如果open函数只带一个文件名参数,那么我们可以获得能读取文件内容的文件对象。如果要向文件内写入内容,则必须提供一个模式参数

      'r' -----读模式(制定读模式与不制定的效果是一样的)

      'w'-----写模式

      'a'-----追加模式

      'b'-----二进制模式(python假定处理的都是文本文件(包含字符),但是如果是其他类型的文件(二进制),比如声音或者图像,那么要指定 b模式)

        (为什么使用二进制模式:   和 的转换,但是如果是二进制文件就不会转。

      '+'-----读写模式

      11.1.2 缓冲

      如果是0(False),I/O就是无缓冲的,所有的读写操作都是直接针对硬盘;

      如果是1(True),就是有缓冲的,使用内存代替硬盘,速度快,只有在flush或close的时候才会更新硬盘上的数据。

      大于1,代表缓冲区大小(单位是字节),-1代表使用默认缓冲区大小。

    11.2 基本的文件方法

      11.2.1 读和写

    >>> f = open(r'c:	extsomefile.txt','w')      // 写
    >>> f.write('abcd 
     ef 
     gh')
    15
    >>> f.flush()                                  //  调用close()或flush()才能真正写进去

    >>> f=open(r'c: extsomefile.txt', 'r')       // 读
    >>> f.read(4)                              // 只读4个
    'abcd'

    >>> f.read()                                  // 读所有的
    ' ef gh'

      11.2.2 管式输出

      前一个命令的输出是下一个命令的输入,用符号“|”连接

      11.2.3 读写行

      >>> f.readline()
      ''
      >>> f.seek(0)       //  定位到文本开始
      0
      >>> f.readline()      // 读取一个行
      'abcd 
    '
    
      >>> f.readlines()     // 读取所有的行,返回列表
      [' ef 
    ', '
    ', ' gh']

      f.writelines(['afa','gdf','gfdg']) // 按行的方式写入列表

      11.2.4 关闭文件 

      对文件操作应该,在finally中调用 f.close(), 这样保证出异常了也可以正确关闭文件。

      11.2.5 使用基本文件方法

    11.3 对文件内容进行迭代

      11.3.1 按字节处理 

    f = open(filename)
    char = f.read(1)
    while char:
        process(char)
        char = f.read(1)
    f.close()

      11.3.2 按行操作

       readline()

      11.3.3 读取所有内容

      read()   :  不带参数的read方法可以读取所有行。

      readlines(): 读取所有行。

      11.3.4 使用fileinput实现懒惰行迭代

      readline()  每次只读一行。

    import fileimput
    for line in fileinput.input(filename):
        process(line)

      11.3.5 文件迭代器

    f = open(filename)
    for line in f:
        processs(line)
    f.close()

     

  • 相关阅读:
    Piggy-Bank (hdoj1114)
    Word Amalgamation(hdoj1113)
    Lowest Bit(hdoj1196)
    1206: B.求和
    1207: C.LU的困惑
    STL初步
    关于521(nyoj)
    first blood暴力搜索,剪枝是关键
    变态最大值(nyoj)
    烧饼(nyoj779)
  • 原文地址:https://www.cnblogs.com/liufei1983/p/7268958.html
Copyright © 2020-2023  润新知