• 【python】文件的读写


    一、文件是储存在辅助器上的数据序列,展现形态分为文本文件和二进制文件,以二进制形式储存。

    (1)文本文件

           由单一特定编码组成的文件,如UTF-8编码,文本文件存储的是常规字符串,由若干文本行组成,通常每行以换行符' '结尾。常规字符串是指记事本之类的文本编辑器能正常显示、编辑并且人类能够直接阅读和理解的字符串,如英文字母、汉字、数字字符串。在Windows平台中,扩展名为.txt、.log、.ini的文件都属于文本文件,可以使用字处理软件如gedit、记事本进行编辑。

    (2)二进制文件

           直接由比特0和1组成,没有统一的字符编码。常见的如图形图像文件、音视频文件、可执行文件、资源文件、各种数据库文件、各类office文档等都属于二进制文件。二进制文件把信息以字节串(bytes)进行存储,无法用记事本或其他普通字处理软件直接进行编辑,通常也无法被人类直接阅读和理解,需要使用对应的软件进行解码后读取、显示、修改或执行。例如,图6-1中使用Windows记事本打开Python主程序文件pythonw.exe,由于这个文件是二进制可执行文件,无法使用记事本查看,所以显示乱码。

    二、文件内容操作三步走:打开、读写、关闭。

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

    file参数指定了被打开的文件名称。

    mode参数指定了打开文件后的处理方式。

    buffering参数指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区的大小。默认值是缓存模式。

    encoding参数指定对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如GBK、utf8、CP936等等。

           如果执行正常,open()函数返回1个文件对象,通过该文件对象可以对文件进行读写操作。如果指定文件不存在、访问权限不够、磁盘空间不足或其他原因导致创建文件对象失败则抛出异常。

    f1 = open( 'file1.txt', 'r' )     # 以读模式打开文件

    f2 = open( 'file2.txt', 'w')      # 以写模式打开文件

    当对文件内容操作完以后,一定要关闭文件对象,这样才能保证所做的任何修改都确实被保存到文件中。

    f1.close()

    文件的打开:<变量名(文件句柄)>=open(<文件名>,<打开模式>)

    文件的打开方式

    模式       说明

    r            读模式(默认模式,可省略),如果文件不存在则抛出异常

    w           写模式,如果文件已存在,先清空原有内容

    x            写模式,创建新文件,如果文件已存在则抛出异常

    a           追加模式,不覆盖文件中原有内容

    b           二进制模式(可与其他模式组合使用)

    t            文本模式(默认模式,可省略)

    +           读、写模式(可与其他模式组合使用)

    文件对象常用属性

    属性       说明

    buffer     返回当前文件的缓冲区对象

    closed    判断文件是否关闭,若文件已关闭则返回True

    fileno      文件号,一般不需要太关心这个数字

    mode     返回文件的打开模式

    name     返回文件的名称

    文件对象常用方法

    方法            功能说明

    close()        把缓冲区的内容写入文件,同时关闭文件,并释放文件对象

    detach()      分离并返回底层的缓冲,底层缓冲被分离后,文件对象不再可用,不允许做任何操作

    flush()          把缓冲区的内容写入文件,但不关闭文件

    read([size])    从文本文件中读取size个字符(Python 3.x)的内容作为结果返回,或从二进制文件中读取指定数量的字节并返回,如果省略size则表示读取所有内容

    readable()      测试当前文件是否可读

    readline()       从文本文件中读取一行内容作为结果返回

    readlines()     把文本文件中的每行文本作为一个字符串存入列表中,返回该列表,对于大文件会占用较多内存,不建议使用

    seek(offset[, whence])  把文件指针移动到新的字节位置,offset表示相对于whence的位置。whence为0表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算,默认为0

    seekable()      测试当前文件是否支持随机访问,如果文件不支持随机访问,则调用方法seek()、tell()和truncate()时会抛出异常

    tell()       返回文件指针的当前位置

    truncate([size])    删除从当前指针位置到文件末尾的内容。如果指定了size,则不论指针在什么位置都只留下前size个字节,其余的一律删除

    write(s)   把s的内容写入文件

    writable() 测试当前文件是否可写

    writelines(s)   把字符串列表写入文本文件,不添加换行符

    例1  向文本文件中写入内容

    s = 'Hello world 文本文件的读取方法 文本文件的写入方法 '

    f = open('sample.txt', 'a+')      #打开文件

    f.write(s)                    #写入文件内容

    f.close()                     #关闭文件

    例2   读取文本文件内容

    >>> fp = open('sample.txt')

    >>> print(fp.read(4))           #从当前位置读取前4个字符

    Hell

    >>> print(fp.read(18))          #英文字符和汉字一样对待

    o world

    >>> print(fp.read())            #从当前位置读取后面的所有内容

    >>> fp.close()                  #关闭文件对象

    例3   读取并显示文本文件所有行

    with open('sample.txt') as fp:

        for line in fp:                #文件对象是可以迭代的

            print(line)

  • 相关阅读:
    特征选择(四)- 分散度
    机器学习实践中的7种常见错误
    逻辑回归 vs 决策树 vs 支持向量机(I)
    逻辑回归 vs 决策树 vs 支持向量机(II)
    线性回归和逻辑回归
    Mac 下 python 环境问题
    Linux目录/usr结构说明
    Python 处理 json
    感知机、logistic回归 损失函数对比探讨
    SVM探讨
  • 原文地址:https://www.cnblogs.com/litchi666/p/12926349.html
Copyright © 2020-2023  润新知