python 读写文件

一、文件的打开和创建

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新手一枚,最近在试着用python读写复制中文txt文件,记录下自己的解决方法。 文章一共分为2个部分...
    小暖冰2333阅读 24,033评论 0 1
  • 本文通过使用 Python 中的 with 来读写 word 文档,遇到文本的编码与解码问题,试了下面很多种方法,...
    倔强的潇洒小姐阅读 16,602评论 0 3
  • f=open('文件路径','打开模式') 模式分为: ‘w' 只写 ‘r’ 只读 ‘a’ 添加到文件末尾...
    泰平阅读 377评论 0 0
  • 今天下班朋友无聊找我下象棋,他说:“我最喜欢象棋里的车,横冲直撞,牛逼哄哄,你呢?你喜欢哪一个?”我的水平很烂,不...
    亦尽平阅读 1,046评论 0 2
  • 1 邹凯追葛楠的时候,我们在读高三,邹凯在我们的隔壁班,读高四。 那会儿,复读班在我们眼里是神一般的存在,整个百人...
    乖乖猫的毛阅读 886评论 0 51