文件处理函数详解及示例演示
文件处理是计算机编程中一项十分重要的任务。在日常编程中,我们需要通过读取和写入文件来处理和存储数据。在Python中,文件处理每个人接触过Python都很熟悉的一部分。本文旨在深入介绍Python中文件处理的函数及示例演示,帮助初学者进一步了解文件处理的基础知识。
在Python中,文件处理的基础函数有三个:open(打开文件)、read(读取文件)和write(写入文件)。下面我们将详细介绍这三个函数。
一、打开文件(open)
在Python中打开文件的函数是open,它的基础语法如下:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
其中,file表示文件路径,mode表示文件打开模式,buffering表示文件缓冲方式,encoding表示文件编码方式,errors表示文件编码出现错误时的处理方式,newline表示写入文件时的换行符类型。
mode参数是必须要指定的参数,其默认值为“r”,即以只读方式打开文件。常用的mode参数有:
模式
描述
r
以只读方式打开文件,文件指针在文件开头。
w
以只写方式打开文件,若该文件存在,则清空文件,从开头写入新内容,若不存在,则创建新文件。
a
以追加方式打开文件,若该文件存在,则直接在文件内容末尾处写入新内容,若不存在,则创建新文件。
r+
以读写方式打开文件,文件指针在文件开头。
w+
以读写方式打开文件,若该文件存在,则清空文件,从开头写入新内容,若不存在,则创建新文件。
a+
以读追加方式打开文件,若该文件存在,则直接在文件内容末尾处写入新内容,若不存在,则创建新文件。
二、读取文件(read)
在Python中读取文件的函数是read,它的基础语法如下:
read(size=-1)
其中,size表示每次读取的字节数。如果size为负数或不给定则读取整个文件。如果指定了size超过了文件大小,则只会读取文件中的内容并返回。
三、写入文件(write)
在Python中写入文件的函数是write,它的基础语法如下:
write(str)
其中,str表示要写入的字符串。
下面我们将用几个简单的示例演示这三个函数的具体用法。
示例1:读取小文件
我们来看一个读取小文件的示例,假设我们有一个文本文件,里面存储着若干个数字,我们需要读取其中的数据并计算它们的和。
首先,我们需要打开文件,代码如下:
f = open('numbers.txt')
这里我们只传递了文件名,因为我们想以只读方式打开文件,这是mode参数的默认值。接着,我们可以使用read函数读取文件中的内容,代码如下:
nums_str = f.read()
这里我们读取了整个文件的内容,并将其存储为一个字符串。接着,我们可以使用split函数将字符串分割为多个数字,代码如下:
nums_list = nums_str.split()
这里我们使用了split函数默认的分隔符(空格、制表符、换行符)将字符串分割为多个字符串,并存储为一个列表。接下来,我们将字符串列表转换为数字列表,代码如下:
nums = [int(x) for x in nums_list]
这里我们使用了列表推导式将字符串列表转换为数字列表。最后,我们使用sum函数计算数字列表的和,代码如下:
total = sum(nums)
代码整合如下:
f = open('numbers.txt')
nums_str = f.read()
nums_list = nums_str.split()
nums = [int(x) for x in nums_list]
total = sum(nums)
示例2:写入小文件
我们再来看一个写入小文件的示例,假设我们有一个空的文本文件,我们需要向其中写入若干行数据。
首先,我们需要打开文件,并将其打开为写入模式,代码如下:
f = open('output.txt', 'w')
这里我们传递了文件名以及打开模式。接着,我们可以使用write函数向文件中写入若干行数据,代码如下:
f.write('This is the first line.
')
f.write('This is the second line.
')
这里我们分别向文件中写入了两行数据,每行数据的结尾都加了一个换行符(
)。最后,我们需要关闭文件,代码如下:
f.close()
示例3:读取大文件
对于大文件的读取,我们不能一次性读取整个文件。相反,我们需要按块读取文件内容,分块读取文件可以避免占用大量内存。
举个例子,假设我们有一个500MB的文本文件,我们需要读取其中的数据并计算它们的总和,但我们不能一次性将整个文件读取到内存中。我们可以使用read函数按块读取文件,代码如下:
f = open('big_file.txt')
total = 0
while True:
chunk = f.read(1024)
if not chunk:
break
nums_str = chunk.split()
nums = [int(x) for x in nums_str]
total += sum(nums)
f.close()
这里我们读取文件时每次读取1024字节的数据块,并将数据块分割为字符串列表,然后再将字符串列表转换为数字列表,最后计算数字列表的总和。由于分块读取文件时,每次只读取一小部分文件内容,因此可以大大减轻内存占用。同样,我们也需要关闭文件。
在Python中,还有一些其他的文件处理函数,例如:readline(按行读取文件)、writeline(按行写入文件)、seek(控制文件指针位置)、tell(返回文件指针当前位置)等。熟练掌握这些函数的使用方法,可以使文件处理更加高效。
