九、Python高级功能之文件读写

发布时间:2019-09-08 09:13:28编辑:auto阅读(1578)

    Python高级功能之文件读写


    一、Python进行文件读写的函数时open或file

        file('filename','mode')

    open('filename','mode')

    mode模式

    r    只读

    r+   读写

    w    写入,先删除原文件,再重新写入,如果文件没有则创建

    w+   读写,先删除源文件,再重新写入,如果文件没有泽创建(可以写入输出)

    a    写入,在文件末尾追加新的内容,文件不存在则创建

    a+   读写,在文件末尾追加新的内容,文件不存在则创建

    b    打开二进制文件,可以与r,w,a,+结合使用

    U    支持所有的换行符号 \r,\n,\r\n


    >>> fo = open('/root/test.txt')   #打开文件

    >>> fo

    <open file '/root/test.txt', mode 'r' at 0x7ff52bd64d20>

    >>> fo.read()    #读取文件

    'asdfaf\nasdfad\nafd\n'

    >>> fo.close()   #关闭文件


    >>> fo = open('/root/new.txt','w')   #以w的模式打开文件,没有则创建

    >>> fo.write('hello \ni am new')   #写入内容

    >>> fo.close()    #关闭文件



    二、文件对象方法

    FileObject.close()   #关闭

    String = FileObject.readline([size])   #每次读取一行,size是指每行每次读取size个字符,直到行的末尾(超出范围输出空值)

    >>> f1 = open('text.txt')

    >>> f1.readline()

    'www.csvt.net\n'

    >>> f1.readline()

    'i am sdfasd\n'

    >>> f1.readline()

    'hello world\n'

    >>> f1.readline()

    ''

    List = FileObject.readlines([size])  #每行为单位,返回一个列表,size是指每行每次读取行的size个字符,直到行的末尾

    >>> f1 = open('text.txt')

    >>> f1.readlines()

    ['www.csvt.net\n', 'i am sdfasd\n', 'hello world\n']


    String = FileObject.read([size])   #读出文件所有内容,并复制给一个字符串

    >>> f1.read()

    'www.csvt.net\ni am sdfasd\nhello world\n'

    FileObject.next()     #返回当前行,并将文件指针到下一行(超出范围,停止输出)

    >>> f1 = open('text.txt')

    >>> f1.next()

    'www.csvt.net\n'

    >>> f1.next()

    'i am sdfasd\n'

    >>> f1.next()

    'hello world\n'

    >>> f1.next()

    Traceback (most recent call last):

    File "<stdin>", line 1, in <module>

    StopIteration

    FileObject.write(string)

    FileObject.writelines(List)

    FileObject.seek(偏移量,选项) 

     选项为0时,表示将文件指针指向从文件头部到“偏移量”字节处

     选项为1时,表示将文件指针指向从文件的当前位置,向后移动”偏移量“字节

     选项为2时,表示将文件指针指向从文件的尾部,向前移动“偏移量”字节

    FileObject.flush() #提交更新

     


    例子:

    文件查找:

    统计文件中hello个数

    #!/usr/bin/python

    import re

    fp = file("text.txt",'r')

    count = 0

    for s in fp.readlines():

        li = re.findall("hello",s)

        if len(li)>0:

            count = count + len(li)

    print "Search %d hello" % count

    fp.close()


    文件内容替换:

    将文件中hello替换为abc,并保存结果到text2.txt文件中

    #!/usr/bin/python

    fp1 = file("text.txt",'r')

    fp2 = file("text2.txt",'w')

    for s in fp1.readlines():

        fp2.write(s.replace("hello","abc"))

    fp1.close()

    fp2.close()


    将文件中hello替换为abc

    #!/usr/bin/python

    fp1 = open("text.txt",'r+')

    s = fp1.read()

    fp1.seek(0,0)

    fp1.write(s.replace("hello","abc"))

    fp1.close()

关键字