• python open()函数解析(最清晰的解释)


    欢迎关注WX公众号:【程序员管小亮】

    python open()函数用于打开一个文件,创建一个file对象。

    open(name, 
    	mode, 
    	buffering
    )
    

    参数:

    • name : 一个包含了要访问的文件名称的字符串值。

    • mode : mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

    • buffering : 如果buffering的值被设为 0,就不会有寄存。如果buffering的值取 1,访问文件时会寄存行。如果将buffering的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

    不同模式打开文件的完全列表:
    在这里插入图片描述
    file对象方法

    • file.read([size])size未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。

    • file.readline():返回一行。

    • file.readlines([size]) :返回包含size行的列表, size未指定则返回全部行。

    • for line in f: print line :通过迭代器访问。

    • f.write("hello ") :如果要写入字符串以外的数据,先将它转换为字符串。

    • f.tell() :返回一个整数,表示当前文件指针的位置(就是到文件头的比特数)。

    • f.seek(偏移量,[起始位置]):用来移动文件指针。

      • 偏移量: 单位为比特,可正可负
      • 起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾
    • f.close() : 关闭文件。

    例子:

    # 测试文件名为:
    # text.txt
    # 测试文件内容为:
    # abcdefg
    # 每次操作后将文件复原
    
    # r
    # 以只读方式打开文件,文件不可写
    # 要打开的文件不存在时会报错
    # 文件的指针将会放在文件的开头
    # 这是默认模式
    # file = open('test.txt', 'r')
    # FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
    file = open('text.txt', 'r')
    print(file.read())
    # abcdefg
    file.write('aaa')
    # io.UnsupportedOperation: not writable
    file.close()
    
    # rb
    # 以二进制格式打开一个文件用于只读,文件不可写
    # 要打开的文件不存在时会报错
    # 文件指针将会放在文件的开头
    # 这是默认模式
    # file = open('test.txt', 'rb')
    # FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
    file = open('text.txt','rb')
    print(file.read())
    b'abcdefg'
    # file.write(b'aaa')
    # io.UnsupportedOperation: not writable
    file.close()
    
    # r+
    # 打开一个文件用于读写,写入内容为str
    # 文件指针将会放在文件的开头
    # 重新写入的内容从头开始替换
    file = open('text.txt', 'r+')
    file.write('aaa')
    file.close()
    file = open('text.txt','r')
    print(file.read())
    # 'abcdefg'
    file.close()
    
    # rb+
    # 以二进制格式打开一个文件用于读写,写入内容为bytes
    # 文件指针将会放在文件的开头
    # 重新写入的内容从头开始替换
    # file = open('text.txt','rb+')
    # file.write('aaa')
    # TypeError: a bytes-like object is required, not 'str'
    file.write(b'aaa')
    file.close()
    file = open('text.txt','rb')
    print(file.read())
    # b'aaadefg'
    file.close()
    
    # w
    # 打开一个文件只用于写入,写入内容为str
    # 文件不可读
    # 如果该文件已存在则将其覆盖,原文件内容将清空
    # 如果该文件不存在,创建新文件
    # file = open('test.txt', 'w')
    # 创建一个空文件
    file = open('text.txt', 'w')
    file.write('gfedcba')
    file = open('text.txt', 'r')
    print(file.read())
    file.close()
    
    # wb
    # 以二进制格式打开一个文件只用于写入,写入内容为bytes
    # 文件不可读
    # 如果该文件已存在则将其覆盖,原文件内容将清空
    # 如果该文件不存在,创建新文件
    # file = open('test.txt', 'wb')
    # 创建一个空文件
    file = open('text.txt', 'wb')
    file.write(b'gfedcba')
    file = open('text.txt', 'r')
    print(file.read())
    file.close()
    
    # w+
    # 打开一个文件用于读写,写入内容为str
    # 如果该文件已存在则将其覆盖,原文件内容将清空
    # 如果该文件不存在,创建新文件
    # file = open('test.txt', 'w+')
    # 创建一个空文件
    file = open('text.txt', 'w+')
    file.write('gfedcba')
    file = open('text.txt', 'r')
    print(file.read())
    file.close()
    
    # wb+
    # 以二进制格式打开一个文件用于读写,写入内容为bytes
    # 如果该文件已存在则将其覆盖
    # 如果该文件不存在,创建新文件
    file = open('text.txt', 'wb+')
    file.write(b'gfedcba')
    file = open('text.txt', 'r')
    print(file.read())
    file.close()
    
    # a
    # 打开一个文件用于追加(只写),写入内容为str
    # 如果该文件已存在,文件指针将会放在文件的结尾,新的内容将会被写入到已有内容之后
    # 如果该文件不存在,创建新文件进行写入
    # file = open('test.txt', 'a')
    # 创建一个空文件
    file = open('text.txt', 'a')
    file.write('aaa')
    file.close()
    file = open('text.txt')
    print(file.read())
    file.close()
    
    # ab
    # 以二进制格式打开一个文件用于追加(只写),写入内容为bytes
    # 如果该文件已存在,文件指针将会放在文件的结尾,新的内容将会被写入到已有内容之后
    # 如果该文件不存在,创建新文件进行写入
    # file = open('test.txt', 'ab')
    # 创建一个空文件
    file = open('text.txt', 'ab')
    file.write(b'aaa')
    file.close()
    file = open('text.txt')
    print(file.read())
    file.close()
    
    # a+
    # 打开一个文件用于追加(读写),写入内容为str
    # 如果该文件已存在,文件指针将会放在文件的结尾,新的内容将会被写入到已有内容之后
    # 如果该文件不存在,创建新文件用于读写
    # file = open('test.txt', 'a+')
    # 创建一个空文件
    file = open('text.txt', 'a+')
    file.write('aaa')
    file.close()
    file = open('text.txt')
    print(file.read())
    file.close()
    
    # ab+
    # 以二进制格式打开一个文件用于追加(读写),写入内容为bytes
    # 如果该文件已存在,文件指针将会放在文件的结尾,新的内容将会被写入到已有内容之后
    # 如果该文件不存在,创建新文件用于读写
    file = open('text.txt', 'ab+')
    file.write(b'aaa')
    file.close()
    file = open('text.txt')
    print(file.read())
    file.close()
    

    python课程推荐。
    在这里插入图片描述

  • 相关阅读:
    棋盘型动态规划 之 CODE[VS] 1220 数字三角形
    棋盘型动态规划 之 CODE[VS] 1219 骑士游历 1997年
    棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组
    棋盘型动态规划 之 CODE[VS] 1010 过河卒 2002年NOIP全国联赛普及组
    [实验]自举?只不过是电容和二极管捣的乱
    [嵌入式]I2C协议指东
    [语法]C语言中二维数组做输入参数
    深入类方法。
    今天周六祝大家休息开心,我还在奋斗....
    我们一起来一把.....现在学习真的好累,一天下来脑袋要炸
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302799.html
Copyright © 2020-2023  润新知