• open()


    open() 用于打开文件,可以对文件进行读写操作,语法如下:

    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True) -> file object

    file:指定要打开的文件的文件名
    mode:可选参数,指定打开文件的模式,如果不指定默认以只读模式打开文件
    buffering:可选参数,设置缓冲区大小,设置缓冲区的作用是是为了减少系统的IO调用
    encoding:可选参数,用于说明打开文件后,返回的数据采用的是何种编码,一般采用 utf8 或 gbk
    errors:可选参数,指定 errors=strict 时,字符编码出现问题时会报错,指定 errors=ignore 时,字符编码出现问题时会忽略
    newline:可选参数,用于指定换行符,如果是Linux文件我们可以指定 是换行符,如果是Windows文件我们可以指定 是换行符
    closefd:可选参数,指定传入的 file 参数类型,指定 closefd=True 时,传入的 file 参数为文件名,指定 closefd=False 时,传入的 file 参数为文件描述符
    file object:打开文件后会返回一个文件对象,Python通过文件对象的方法对文件进行读写等操作

    缓冲区的几种设置方法:

      (1) 如果设置为0,关闭缓冲区,有输入就直接写入磁盘文件
      (2) 如果设置为1,碰到换行就会将缓冲区的数据写入磁盘文件
      (3) 如果设置为大于1,缓冲区满了 n 个字节才会写入磁盘文件

    打开模式:

      r :以只读模式打开文件
      w :以写模式打开文件,打开前会先清空文件
      a :以追加模式打开文件
     b :以二进制模式打开文件,适用于非文本文件,如图片、视频文件等
     rb :以二进制读模式打开文件
     wb :以二进制写模式打开文件
     ab :以二进制追加模式打开文件
     r+ :以读写模式打开文件,详解
     w+ :以读写模式打开文件,详解
     a+ :以读写模式打开文件,详解
     rb+ :以二进制读写模式打开 (参考 r+ )
     wb+ :以二进制读写模式打开 (参考 w+ )
     ab+ :以二进制读写模式打开 (参考 a+ )

    文件对象的方法:

     read():一次性读取所有文件内容,返回一个字符串;也可以指定 read(5) 读取几个字符,通常用在大文件的循环中
     readline():一次只读取一行文件内容,返回一个字符串
     readlines():一次性读取所有文件内容,返回一个列表,每一行是列表的一个元素
     next():返回文件的下一行,如果指针在文件末尾,再执行就会报错
     flush():刷新缓冲区,直接把缓冲区的数据立刻写入文件
     write():用于写入指定的内容,需要以可写模式打开
     seek():用于移动文件指针,通常使用 seek(0) 移动到文件起始位置
     tell():返回移动指针的位置
     close():用于关闭文件,只有关闭了文件,写操作才会被保存

    简单示例:

    In [1]: fd = open('1.txt', 'r')    # 打开文件
    
    In [2]: fd.read()                  # 读取文件内容
    Out[2]: 'aaa
    bbb
    ccc
    '
    
    In [3]: fd.close()                 # 关闭文件

    通常我们用 with open() 来取代 open() ,用 with 语句的好处,就是到达语句末尾时,会自动关闭文件,不需要我们手动 close() :

    In [10]: with open('1.txt', 'r') as fd:
       ....:     data = fd.read()
       ....:     print(data)
       ....:     
    aaa
    bbb
    ccc


    使用for循环遍历文件:

    #!/usr/bin/env python
    
    fd = open('1.txt', 'r')
    
    for line in fd:
        print(line),

    fd.close()
    #!/usr/bin/env python
    
    with open('1.txt', 'r') as fd:
        for line in fd:
            print(line),


    使用while循环遍历文件:

    #!/usr/bin/env python
    
    fd = open('1.txt', 'r')
    
    while True:
        line = fd.readline()
        if not line:
            break
        print(line),

    fd.close()
    #!/usr/bin/env python
    
    with open('1.txt', 'r') as fd:
        while True:
            line = fd.readline()
            if not line:
                break
            print(line),

         

  • 相关阅读:
    BZOJ5057 : 区间k小值5
    Urozero Autumn 2016. UKIEPC 2016
    BZOJ2808 : 那些年我们画格子
    BZOJ4970 : [ioi2004]empodia 障碍段
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    BZOJ4316 : 小C的独立集
    网络流(3)——找到最小st-剪切
    网络流(2)——用Ford-Fullkerson算法寻找最大流
    网络流(1)——网络、流网络和网络流
    退而求其次(4)——椭圆中的最大矩形
  • 原文地址:https://www.cnblogs.com/pzk7788/p/10252398.html
Copyright © 2020-2023  润新知