Python文件处理

数据的存储可以使用数据库,也可以使用文件。 数据库保持了数据的完整性和关联性,且使用数据更安全、可靠。使用文件存储数据则非常简单、易用,不必安装数据库管理系统等运行环境。 文件通常用于存储应用软件的参数或临时性数据,是一个命名的比特集合,存储在硬盘、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文件

例:返回当前目录中所有文件的大小总和

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180302G19IK700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券