码迷,mamicode.com
首页 > 编程语言 > 详细

Python基础07 文件对象

时间:2019-04-28 12:53:24      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:byte   读写   表示   self   ioerror   manager   int   文本文件   文件中   

Python具有基本的文本文件读写功能。Python的标准库提供有更丰富的读写功能。

文本文件的读写主要通过open()所构建的文件对象来实现。

创建文件对象


我们打开一个文件,并使用一个对象来表示该文件:

f = open(文件名,模式)

常用的模式有:

‘r‘:读

‘w‘:写

‘a‘:追加

‘r+‘ :r+w(可读可写,文件若不存在就报错 IOError)

‘w+‘ : w+r(可读可写,文件若不存在就创建)

‘a+‘ :a+r(可追加可写,文件若不存在就创建)

对应的,如果是二进制文件,就都加一个b就好啦:

‘rb‘ ‘wb‘ ‘ab‘ ‘rb+‘ ‘wb+‘ ‘ab+‘

比如:

>>>f = open(‘test.txt‘,‘r‘)

 

文件对象的方法


读取:

content = f.read(N)          # 读取N bytes的数据

content = f.readline()       # 读取一行

content = f.readlines()      # 读取所有行,储存在列表中,每个元素是一行


写入:

f.write(‘I like apple‘)      # 将‘I like apple‘写入文件,字符串作为参数

f.writelines([‘hello\n‘,‘python\n‘])  # 字符序列作为参数

 

关闭文件:

f.close()

 

上下文管理器


上下文管理器(context manager)用于规定某个对象的使用范围。一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存)。它的语法形式是with...as...

可以在不需要文件的时候,自动关闭文件。

with open(‘new.txt‘, ‘w‘) as f:
f.write("Hello World!")
print f.closed

上下文管理器有隶属于它的程序块,当隶属的程序块执行结束的时候,上下文管理器自动关闭了文件(可以通过f.closed来查询文件是否关闭)。我们相当于使用缩进规定了文件对象f的使用范围。

上面的上下文管理器基于f对象的__exit__()特殊方法。当我们使用上下文管理器的语法时,实际上要求Python在进入程序块之前调用对象的__enter__()方法,在结束程序块的时候调用__exit__()方法。对于文件对象f来说,它定义了__enter__()和__exit__()方法。在f的__exit__()方法中,有self.close()语句。所以在使用上下文管理器时,我们就不用明文关闭f文件了。

任何定义了__enter__()和__exit__()方法的对象都可以用于上下文管理器。文件对象f是内置对象,所以f自动带有这两个特殊方法,不需要自定义。

 

练习

比较两个文件中的内容,并把存在于 a.txt 不存在于 b.txt 的数据输出到 c.txt:

技术图片
fa = open(‘a.txt‘,‘r‘)
a = fa.readlines()
fa.close()

fb = open(‘b.txt‘,‘r‘)
b = fb.readlines()
fb.close()

c = [i for i in a if i not in b]
fc = open(‘c.txt‘,‘w+‘)
fc.writelines(c)
fc.close()
技术图片

 

Python基础07 文件对象

标签:byte   读写   表示   self   ioerror   manager   int   文本文件   文件中   

原文地址:https://www.cnblogs.com/yutb/p/10783069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!