zoukankan      html  css  js  c++  java
  • 【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)

  • 相关阅读:
    托付和事件的使用
    在使用supervisord 管理tomcat时遇到的小问题
    无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin
    (转)Openlayers 2.X加载高德地图
    (转)openlayers实现在线编辑
    (转) Arcgis for js加载百度地图
    (转)Arcgis for js加载天地图
    (转) 基于Arcgis for Js的web GIS数据在线采集简介
    (转) Arcgis for js之WKT和GEOMETRY的相互转换
    (转)Arcgis for Js之Graphiclayer扩展详解
  • 原文地址:https://www.cnblogs.com/litchi666/p/12926349.html
Copyright © 2011-2022 走看看