Python入门笔记(15):对文件的操纵(1)

    添加时间:2013-7-3 点击量:

    一、文件对象


    我懂得的文件对象就是一个接口,经由过程这个接口对文件进行相干操纵。


    《Python 核心编程》上说的很晦涩,这里没有深切懂得到,有人能申明给我听。



    >>> f = open(demo.txtr
    >>> f
    <open file demo.txt, mode r at 0 x00CCCEC0>
    >>> type(f)
    <type file>


    二、相干函数


    [1]、内建函数:open()


    供给了初始化输入/输出(I/O)操纵的通用接口,成功打开一个文件后会返回一个文件对象,不然产生IOError异常。语法如下:



    file_object = open(file_name,access_mode = r,buffering = -1)


    解析如下:


    1):file_name:默示要打开文件名字的字符串,可所以相对路径也可所以绝对路径。
    如:我在D盘新建一个空白名为out的文本文件,然掉队行相干操纵。



    >>> f = open(../out.txtw
    >>> f.write(good
    >>> f.close()


    则打开该文件后,发明good已经写入进去了。


    接下来应用绝对路径进行接见,如下:



    >>> f = open(D:/out.txtr
    >>> f.read()
    good
    >>> f.close()


    2、可选变量access_mode也是字符串,代表文件打开模式。



    重视:


    1):应用r或U模式打开的文件必须已经存在


    2):w模式打开的文件若存在则先清空,然后从头创建


    3):a模式打开的文件是为了追加数据做筹办的,所有写入的数据将追加到文件末尾。若是文件不存在,则主动被创建。


    4):+代表可读可写


    5):b代表二进制模式接见


    6):默认景象下是 r


    3、buffering可选参数,用于指导接见文件所采取的缓存体式格式。0默示不缓存;1默示只缓存一行,n代表缓存n行。若是不供给或为负数,则代表应用体系默认的缓存机制。


    用处?这个麻烦有人能告诉我!


    封闭文件:


    打开文件消费体系资料, 并且依附于文件模式, 其它法度或许不克不及接见它们。这就是一旦操纵完毕就该封闭文件的首要地点。


    接上方的操纵,参加还没有封闭:



    >>> f.closed  断定是否封闭
    
    False
    >>> f.close() 封闭办法
    >>> f.closed
    True
    >>> f.tell() 若是已封闭,则一切针对文件操纵都无效

    Traceback (most recent call last):
    File
    <pyshell#27>, line 1, in <module>
    f.tell()
    ValueError: I
    /O operation on closed file
    >>>



    [2]、工厂函数file()


    与open()一样,可彼此调换



    >>> f = file(../out.txtr
    >>> f.read()
    good
    >>> f.close()


    三、相干办法


    返回一个文件对象后(句柄),其实我也不清楚到底什么是句柄,这里摘自百度百科:



    句柄,是全部windows编程的根蒂根基。一个句柄是指应用的一个独一的整数值,即一个四字节长的数值,来标记应用法度中的不合对象和同类对象中的不合的实 例,诸如,一个窗口,按钮,图标,迁移转变条,输出设备,控件或者文件等。应用法度可以或许经由过程句柄接见响应的对象的信息,然则句柄不是一个指针,法度不克不及哄骗句柄来直接浏览文件中的信息。若是句柄不消在I/O文件中,它是毫无用处的。 句柄是windows用来标记应用法度中建树的或是应用的独一整数,windows应用了多量的句柄来标记很多对象。



    一般与文件相干的办法无非是:输入、输出、文件内移动、杂项


    [1]、输入


    1、read():读取字节到字符串中,有可选参数size,默认是-1,若是为-1或复数则文件将会被读取到文件末尾。



    >>> f.read()
    
    good
    >>> f.read(2
    go


    2、readline():读取文件的一行,包含行停止符。同read()也有个可选参数size。


    3、readlines():读取所有(残剩的)然后将它们作为字符串列表返回,它有个可选参数sizhint代表返回的最大字大小。



    >>> f = file(../out.txtr
    >>> f.readlines()
    [
    good]


     [2]、输出


    1、write():把含有文本数据或二进制数据块的字符串写入到文件中去。


    2、writelines():针对列表操纵,接管一个字符串列表作为参数,将它们写入文件,行停止符并不会被主动参加,若是须要的话必须在调用writelines办法前给每一行结尾加上停止符。



    >>> f =  open(d:/out.txtw
    >>> f.writelines([man])
    >>> f.close()
    >>> f = open(d:/out.txtr
    >>> f.read()
    man


    【重视:】


    当应用read()或者readlines()从文件中读取行时,Python并不会删除行停止符,这个操纵留给了法度员。



    >>> f.readlines()
    
    [
    game is your life,game is your life,game is your life,game is your life,game is your life,[]\ngame is your life,game is your life,game is your life[]]

    ---------------------------
    >>> f = open(demo.txtr
    >>> data = [line.strip() for line in f.readlines()]
    >>> data
    [
    game is your life,game is your life,game is your life,game is your life,game is your life,[]game is your life,game is your life,game is your life[]]


    类似的,write()和writelines()也不会主动参加行停止符,应当本身添加。



    >>> f = open(demo.txtw
    >>> f.writelines([ my name is BeginMan\n,I like coding])
    >>> f.close()


    打开该文件看:


     [3]、文件内移动


    tell()、seek()办法



    f = open(d:/out.txtrb
    print f.tell() [1]
    f.seek(10,1) [2]
    print f.tell() 10
    print f.read(10) BeginMan,
    print f.read(18) I like coding.
    print f.tell() 38


    【1】:tell():
    tell 办法确认了已经移到当前文件地位
    一个文件对象保护它所打开文件的状况。文件对象的 tell 办法告诉你在打开文件中的当前地位。
    因为我们还没有对这个文件做任何事,当前地位为 0,它是文件的开端处。


    【2】:seek():
    文件对象的 seek 办法在打开文件中移动到另一个地位。第二个参数指出第一个参数是什么意思:
    0 默示移动到一个绝对地位 (从文件开端算起),
    1 默示移到一个相对地位 (从当前地位算起),
    还有 2 默示文件末尾



    [4]、文件迭代



    >>> f = open(d:/out.txtrb
    >>> for eachline in f:
    eachline


    my name is BeginMan,\r\n
    I like coding.\r\n


     四、相干属性


    file.closed:文件已被封闭,不然为False


    file.mode:文件接见模式


    file.name:文件名称



    >>> f.mode
    
    r
    >>> f.name
    demo.txt


    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: