1.文件的打开与关闭

在Python中操作文件的整体过程很简单:

1).打开文件。

2).读/写数据。

3).关闭文件。

1.1文件的打开

在Python中,open方法用来打开文件,语法格式如下:



open



上述格式中,“文件名”必须要填写,“访问模式”是可选的。

例如打开一个名称为“test.txt”的文件,示例代码如下:



f



需要注意的是,使用open方法打开文件时,如果没有注明访问模式,则必须保证文件是存在的,否则会报如下异常信息。




python打开文件的权限不够 python 文件打开_数据


1.2文件模式

如果使用open方法打开文件时,只带一个文件名,那么我们只能读取文件。如果打开的文件允许写数据,则必须指明文件的模式。Python中文件的访问模式有很多种。


python打开文件的权限不够 python 文件打开_Python_02


在罗列的模式中,“rb”“wb”“ab”模式都是以二进制的方式操作文件,通常这几种模式用于处理二进制类型的文件,如声音或者图像等。

1.3文件的关闭

凡是打开的文件,切记要使用close方法关闭。即使文件会在程序退出后自动关闭,但是考虑到数据的安全性,在每次使用完文件后,都要使用close方法关闭文件,否则一旦程序崩溃,很可能导致文件中的数据没有保存。close方法的使用非常简单,具体示例如下:


#新建一个文件,文件名为:test.txt


2.文件的读写

文件最重要的能力是接收数据或者提供数据。文件的读写,无非是将数据写入文件或者从文件中读取数据,接下来,本节将分别针对文件的读写进行讲解。

2.1写文件

向文件写数据,需要使用write方法来完成,在操作耨个文件时,每调用一次write方法,写入的数据就会追加到文件末尾,接下来,通过一个案例来演示。


[


程序运行后,会在程序所在的路径下生成一个名为Python.txt的文件。打开该文件,可以看到数据成功被写入。


python打开文件的权限不够 python 文件打开_Python_03


注意:当向文件写入数据是,如果文件不存在,那么系统会自动创建一个文件并写入数据。如果文件存在,那么会清空原来文件的数据,重新写入新数据。

2.2读文件

从文件中读取数据时,可以通过多种方式来获取,具体如下。

1.使用read方法读取文件

read方法可以从文件中读取数据,该方法的定义语法如下:


raad


上述方法中,size表示要从问及那种读取的数据的长度,单位为字节。如果没有指定size,那么就表示读取文件的全部数据。

使用read方法读取文件


f


运行结果:


python打开文件的权限不够 python 文件打开_Python_04


2.使用readlines方法读取文件

若文件的内容很少,则可以使用readlines方法把整个文件中的内容进行一次性读取。readlines方法会返回一个列表,列表中的每一个元素为文件中的每一行数据。假设文件“Python.txt”里有3行数据“Hello Python, i am here!”,那么,使用readlines方法读取文件的方式如下面所示。


f


运行结果:


python打开文件的权限不够 python 文件打开_python打开文件_05


3.使用readline方法一行一行读数据

同样,以读取Python.txt文件为例,该文件包含了3行数据,那么使用readline方法读取文件的方式如下面所示。


f


运行结果:


python打开文件的权限不够 python 文件打开_Python_06


2.3文件读写的应用——制作文件的备份

实际开发中,文件的读写可以完成很多功能,如文件的备份就是文件读写的过程。假设,现在又一个文件“data.txt”,该文件储存的数据如图:


python打开文件的权限不够 python 文件打开_数据_07


此时,如果想制作data.txt的备份文件,则需要读取源文件的数据,并将获得的数据写入备份文件。与原文件相比,备份文件储存的数据于源文件是一样的。接下来,通过代码来演示。


oldFileName


运行程序,发现备份制作成功。


python打开文件的权限不够 python 文件打开_数据_08


2.4文件的定位读写

在前面的学习中,文件的读写都是顺序进行的。但是在实际开发中,可能会需要从某个特定位置开始读写,这是,我们需要对文件的读写进行定位,包括获取文件当前读写位置。接下来对两种定位方式进行详细介绍,具体如下:

1.使用tell方法来获取文件当前的读写位置

在读写文件的过程中,如果想知道当前的位置,可以使用tell方法来获取。tell方法返回文件当前的位置,即文件指针当前的位置。

假设文件“Python.txt”的内容如下:


Hello Python, i am here!
Hello Python, i am here!
Hello Python, i am here!


此时,使用read方法读取文件数据的时候,获取当前数据的位置。

使用tell方法获取文件当前的读写位置。


#打开一个已经存在的文件


运行结果:


python打开文件的权限不够 python 文件打开_python打开文件_09


2.使用seek方法定位到文件的指定读写位置

如果在读写文件的过程中,需要从指定的位置开始读写操作,就可以使用seek方法实现。

seek方法的定义语法如下:


seek


seek方法的参数介绍如下:

(1)offset:表示偏移量,也就是需要移动的字节数。

(2)whence:表示方向,该参数得值有三个:

①SEEK_SET或0:whence参数的默认值,表示文件的起始位置开始偏移。

②SEEK_CUR或1:表示从文件当前的位置开始偏移。

③SEEK_END或2:从文件末端开始偏移。

同样以上面的文件“Python.txt”为例,假设要从文件开头偏移四个字节。

使用seek方法定位到文件的指定位置。


f


运行结果:


python打开文件的权限不够 python 文件打开_Python_10


如果将文件的读写位置定位在当前位置偏移四个字符的位置。


#打开一个已存在的文件


运行结果:


python打开文件的权限不够 python 文件打开_文件名_11


将文件的读写位置定位在文件末尾三字节处。


#打开一个已经存在的文件


运行结果:


python打开文件的权限不够 python 文件打开_文件名_12


3.文件的重命名和删除

有时候需要对文件进行重命名、删除等操作,Python的os模块默认已经包含了这些功能。

3.1文件的重命名

os模块的rename方法可以完成对文件的重命名操作,格式如下:


os


上述格式中,src指的是需要修改的文件名,dst指的是修改后的新文件名。


import


3.2文件的删除

os模块的remove方法可以完成对文件的删除操作,格式如下:


os


上述格式中,path指的是指定路径下的文件。


import


4.文件夹的相关操作

实际开发中,有时需要用程序的方式对文件夹进行一定的操作,如创建、删除等。就像对文件操作需要os模块一样,如果要操作文件夹,同样需要os模块。

4.1创建文件夹

os模块的mkdir方法用来创建文件夹。


import


4.2获取当前目录

os模块的getcwd方法用来获取当前的目录。


import


4.3改变默认目录

os模块的chdir方法来改变默认目录,例如,将当前目录改编为上一级目录的代码如下:


import


4.4获取目录列表

os模块的listdir方法用来获取目录列表,例如,要获取当前路径下的子目录列表,代码如下:


import


4.5删除文件夹

os模块的rmdir方法用来删除文件夹。


import


5.文件操作的应用—批量修改文件名

在日常生活中,经常会根据某些需求对文件的名字进行修改,可是,如果需要修改的文件太多,一个一个修改文件名的效率显然是很低的。这时我们可以借助刚学习的文件操作,编写一个批量修改文件名的小程序,这样省时省力,可以极大地提高工作效率。

假设现在有一批文件的名称需要修改,修改前和修改后的文件名如下图所示:


python打开文件的权限不够 python 文件打开_文件名_13

修改前的文件名

python打开文件的权限不够 python 文件打开_python打开文件的权限不够_14

修改后的文件名

#批量在文件名前加前缀


6.文件案例——学生管理系统(文件版)

前面在开发学生管理系统的时候,数据都是储存在变量中的。一旦程序结束或者崩溃,那么之前储存的数据都会消失。为了预防这种情况发生,我们可以借助文件来来储存数据。接下来,我们在之前的基础上,新增一个保存学生信息的功能,具体步骤如下。

(1)在表示菜单列表的函数中,新增一个保存数据的功能项,代码如下:


#打印功能提示


(2)作为程序员,应该考虑写入数据后可以读取出来。我们知道,所有学生的信息保存在变量stuInfo中,它里面是多个字典。但是,write函数传入的参数必须是字符串类型,所以需要把字典强制转换成字符串。定义保存数据的函数,代码如下:


#保存当前所有的学生信息到文件中


(3)从文件读取到的内容是字符串,我们可以把这些带有特定格式的字符串转换成其原有的类型,所以调用eval函数把字符串转换成字典。定义从文件中恢复数据的函数,代码如下:


#恢复数据


(4)在main函数中执行,代码如下:


def


运行程序,添加一个学生信息并保存,如图所示。


python打开文件的权限不够 python 文件打开_数据_15


打开backup.data文件,发现新增的数据成功保存到了文件中,如图所示。


python打开文件的权限不够 python 文件打开_文件名_16


Python其实没有那么难。