Python基础07 文件对象

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()

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

时间: 2024-10-28 22:17:15

Python基础07 文件对象的相关文章

python基础(4)--文件对象,指针,os,os.path模块

In [105]:f1 = open('/tmp/passwd','r+')        读写方式打开 In [106]: f1.next()                                           读一行,next陆续往下读,不会移动行指标 Out[106]: 'root:x:0:0:root:/root:/bin/bash\n' In [107]: f1.seek(0,2)                                        从文件末尾

python基础之文件读写

python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名,返回的是一个列表:os.listdir("指定路径") 函数用来删除一个文件:os.remove("文件路径") 删除多个目录:os.removedirs(&

python基础(类、对象、包)完整的总结

python基础(类和对象.包)类和对象对象是看的见摸的着的类是模板对象需要类才能创建出来类的构成(三个部分)类的名称:类名类的属性:一组数据类的方法:允许进行操作的方法(行为)class 类名():def添加方法class Cat():def run(self):print("cat is running")xiaobai = Cat()xiaobai.run()xiaobai.name = "小白"xiaobai.age = 40类的属性属性就是变量一个类可以创

Python基础07 函数

Python基础07 函数 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 函数的定义 首先,我们要定义一个函数, 以说明这个函数的功能. def square_sum(a,b): c = a**2 + b**2 return c 这个函数的功能是求两个数的平方和. 首先

python基础07

Python基础学习07-模块 模块 一.模块基础 1.定义 模块:用来从逻辑上组织python代码(变量.函数.类.逻辑:目的是实现一个功能 ),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py的文件)  2.导入方法 import  module_name (导入一个模块) import  module_name_1,module_name_2(导入多个模块用逗号分隔) f

Python 基础 - Json文件读写

JSON介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). 在python中,JSON 由列表和字典组成. 序列化的两个模块中,json模块是用于

python基础之面对对象

Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们先来简单的了解下面向对象的一些基本特征. 面向对象编程--Object Oriented Programming,简称OOP

python基础11 文件操作 ,字符编码

主要内容 文件操作 文件操作 打开文件的模式 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读:不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,同a r+:可读可写,若文件不存在,报错:w+: 可读可写,若文件不存在,创建. "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模

Python基础:文件的操作

一.python可以在不导入任何模块的情况下对文件完成读.写.追加,替换(稍复杂). 二.打开文件: 1.f = open('text.txt') 这种方式打开,操作完后需要使用f.colse()关闭. 2.with open('text.txt') as f: 这种方式打开,运行完系统自动关闭,回收内存.建议使用. 三.文件打开模式: python操作文件的时候,默认是只读的,需要指定各种模式才能进行相应的操作,模式列表: r 以只读方式打开文件 r+ 先读,再写模式 rb 以二进制格式只读打