数据的存储可以使用数据库,也可以使用文件。 数据库保持了数据的完整性和关联性,且使用数据更安全、可靠。使用文件存储数据则非常简单、易用,不必安装数据库管理系统等运行环境。 文件通常用于存储应用软件的参数或临时性数据,是一个命名的比特集合,存储在硬盘、U盘、闪存条等辅助存储设备中。 文件分为两类:文本文件和二进制文件。 Python提供了os、os.path、shutil等模块处理文件。
一、文件的常见操作
文件的常见操作包括:
打开文件
读写文件
复制文件
删除文件
1、文件的创建
文件的打开或创建可以使用函数open。该函数可以指定处理模式,设置打开的文件为只读、只写或可读写状态。
格式: open(file, [mode[, buffering]])—>file object
说明:
参数file是被打开的文件名。若文件file不存在,open()将创建该文件,然后再打开该文件。
参数mode是指文件的打开模式。打开模式如表8-1。
参数buffering设置缓存模式。0表示无缓冲;1表示行缓冲;如果大于1则表示缓冲区的大小,,-1(或者任何负数)代表使用默认的缓冲区大小。以字节为单位。
open()返回1个file对象,file对象可以对文件进行各种操作
文件的打开模式
关于file类:
file类用于文件管理,可以对文件进行创建、打开、读写、关闭等操作。 文件的处理一般分为三个步骤:
创建并打开文件,使用open()函数返回1个file对象。
调用file对象的read()、write()等方法处理文件。
调用close()关闭文件,释放file对象占用的资源。
file类的常用属性和方法
例:文件的创建、写入和关闭
例:在文件尾添加内容
2、文件的读取
文件的读取有多种方法,可以使用readline()、readlines()或read()函数读取文件。
(1)按行读取方式readline()
readline()每次读取文件中的一行,需要使用永真表达式循环读取文件。但当文件指针移动到文件的末尾时,依然使用readline()读取文件将出现错误。因此程序中需要添加1个判断语句,判断文件指针是否移动到文件的尾部,并且通过该语句中断循环。
例:使用readline()读文件
执行结果:
(2)多行读取方式
函数readlines()可一次性读取文件中多行数据。
使用readlines()读取文件,需要通过循环访问readlines()返回的内容。
例:使用readlines()读文件
执行结果:
(3)一次性读取方式
读取文件最简单的方法是使用read(),read()将从文件中一次性读出所有的内容,并赋值给1个字符串变量。
例:使用read()返回指定字节的内容
执行结果:
3、文件的写入
文件的写入同样有多种方法,可以使用write()、writelines()方法写入文件。
使用write()方法将字符串写入文件,而writelines()方法可将列表中存储的字符串序列写入文件。
例:使用writelines()写文件
将字符串插入到文件开头:
相比在文件末尾添加字符串,将字符串写入文件开头不那么容易,因为操作系统没有提供这样的支持。
解决的方法是:将文件读取到一个字符串中,将新文本插入到该字符串,再将这个字符串写入原来的文件。
例:将字符串插入到文件开头
4、文件的删除
删除文件需要使用os模块和os.path模块。
os模块提供了对系统环境、文件、目录等操作系统级的接口函数。
下表列出了os模块常用的文件处理函数。
表:os模块常用的文件处理函数
表:os.path模块常用函数
注意:os模块的open()函数与内置的open()函数的用法不同。
例:文件的删除
5、文件的复制
file类并没有提供直接复制文件的方法,但可以使用read()、write()方法来实现复制文件的功能。
例:用read()、write()实现文件复制
复制文件的其他方法:
shutil模块是另一个文件、目录的管理接口,提供了一些用于复制文件、目录的函数。
其中,copyfile()函数可以实现文件的复制,move()函数可以实现文件的剪切。 copyfile(src, dst)
其中,参数src表示源文件的路径,dst表示目标文件的路径,均为字符串类型。
Move(src, dst, *, follow_symlinks=True)
例:使用shutil模块实现文件的复制和移动
6、文件的重命名
os模块的函数rename()可以对文件或目录进行重命名。
在实际应用中,经常需要将某一类文件修改为另一种类型,即修改文件的后缀名。可以通过函数rename()和字符串查找函数来实现。
例:修改后缀名
7、文件内容的搜索和替换
文件内容的搜索和替换可以使用字符串查找和替换来实现。
例:从hello.txt文件中统计字符串’hello’出现的次数。
8、处理二进制文件
Python中,通常使用pickle模块处理二进制文件。
可以使用pickle.dump将数据结构存储到磁盘,之后再用pickle.load从磁盘获取数据结构。
pickle不能用于读写特殊格式的二进制文件,如GIF文件。对这种格式的文件,必须逐字节处理。
例:二进制文件存取
执行结果:
二、目录的常见操作
Python的os模块和os.path模块还提供了一些针对目录操作的函数。
1、创建目录和删除目录
os模块提供的常用目录处理函数如表所示。
表:os模块常用目录处理函数
例:目录的创建和删除
2、目录的遍历
目录的遍历有两种实现方法:递归函数、os.walk()。
例:用递归函数遍历目录d:\Python34\lib
例:使用os.walk()遍历目录
3、其他目录相关操作
对目录的常见操作还有: 返回当前目录中的文件和文件夹; 返回当前目录中的指定类型文件; 返回当前目录中所有文件的大小总和等。
例:返回当前目录中的文件和文件夹
例:返回当前目录或指定目录中的.py文件
例:返回当前目录中所有文件的大小总和
领取专属 10元无门槛券
私享最新 技术干货