美文网首页
python 读写文件

python 读写文件

作者: 爱秋刀鱼的猫 | 来源:发表于2018-01-22 21:30 被阅读0次

    一、文件的打开和创建

    f = open('/filename')
    

    二、文件的读取

    >>> f = open('/tmp/test.txt')
    >>> f.read()
    'hello python!\nhello world!\n'
    >>> f.close()
    

    三、文件的写入

    f1 = open('/tmp/test.txt','w')
    f1.write('hello boy!')
    

    第二个参数指定文件为可写模式。但此时数据只写到了缓存中,并未保存到文件,而且从下面的输出可以看到,原先里面的配置被清空了:

    $cat /tmp/test.txt
    $
    

    只有关闭这个文件,才会把缓存的内容写入文件。

    >>> f1.close()
    $ cat /tmp/test.txt
    $ hello boy!
    

    注意:这一步需要相当慎重,因为如果编辑的文件存在的话,这一步操作会先清空这个文件再重新写入。那么如果不要清空文件再写入该如何做呢?
    使用r+ 模式不会先清空,但是会替换掉原先的文件。可以看到,如果在写之前先读取一下文件,再进行写入,则写入的数据会添加到文件末尾而不会替换掉原先的文件。这是因为指针引起的,r+ 模式的指针默认是在文件的开头,如果直接写入,则会覆盖源文件,通过read() 读取文件后,指针会移到文件的末尾,再写入数据就不会有问题了。

    >>> f2 = open('/tmp/test.txt','r+')
    >>> f2.read()
    'hello girl!'
    >>> f2.write('\nhello boy!')
    >>> f2.close()
    [root@node1 python]# cat /tmp/test.txt
    hello girl!
    hello boy!
    

    这里也可以使用a 模式。

    >>> f = open('/tmp/test.txt','a')
    >>> f.write('\nhello man!')
    >>> f.close()
    >>>
    [root@node1 python]# cat /tmp/test.txt
    hello girl!
    hello boy!
    hello man!
    
    模式 描述
    r 以读方式打开文件,可读取文件信息。
    w 以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容
    a 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建
    r+ 以读写方式打开文件,可对文件进行读和写操作。
    w+ 消除文件内容,然后以读写方式打开文件。
    a+ 以读写方式打开文件,并把文件指针移到文件尾。
    b 以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。

    关于其他模式的介绍,见下表:

    模式 描述
    r 以读方式打开文件,可读取文件信息。
    w 以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容
    a 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建
    r+ 以读写方式打开文件,可对文件进行读和写操作。
    w+ 消除文件内容,然后以读写方式打开文件。
    a+ 以读写方式打开文件,并把文件指针移到文件尾。
    b 以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。

    三、文件对象的方法

    • f.readline() 逐行读取数据
    >>> f = open('/tmp/test.txt')
    >>> f.readline()
    'hello girl!\n'
    >>> f.readline()
    'hello boy!\n'
    >>> f.readline()
    'hello man!'
    >>> f.readline()
    
    • f.readlines() 将文件内容以#列表#的形式存放
    >>> f = open('/tmp/test.txt')
    >>> f.readlines()
    ['hello girl!\n', 'hello boy!\n', 'hello man!']
    >>> f.close()
    
    • f.next() 逐行读取数据
      和f.readline() 相似,唯一不同的是,f.readline() 读取到最后如果没有数据会返回空,而f.next() 没读取到数据则会报错
    • f.writelines() 多行写入
    >>> l = ['\nhello dear!','\nhello son!','\nhello baby!\n']
    >>> f = open('/tmp/test.txt','a')
    >>> f.writelines(l)
    >>> f.close()
    [root@node1 python]# cat /tmp/test.txt
    hello girl!
    hello boy!
    hello man!
    hello dear!
    hello son!
    hello baby!
    

    参考:http://blog.51cto.com/pmghong/1349978

    相关文章

      网友评论

          本文标题:python 读写文件

          本文链接:https://www.haomeiwen.com/subject/bqpfaxtx.html