欢迎访问宙启技术站
智能推送

Python中的文件I/O函数操作

发布时间:2023-06-03 21:49:03

Python 提供了在编程中读写文件的函数。这对于处理数据是很重要的,许多数据分析和科学计算需要从文件读取数据,然后将计算结果写入文件中。Python中的文件I/O函数操作在以下两个方面发挥着很大的作用。

1.文件读取操作:

Python中读取文件的函数是open(),使用open()函数可以打开一个文件,并返回一个文件对象,然后使用文件对象执行读写操作。具体的函数调用方法如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

file:要打开的文件名或路径。

mode:打开文件的模式。默认为'r'。模式参数可以是‘r’(读取模式),‘w’(写入模式),‘x’(独占写入模式,文件存在则会抛出异常),‘a’(追加模式),‘b’(二进制模式),‘t’(文本模式),或者它们的组合,如‘rb’(二进制模式的读取)。

buffering:指定缓冲策略。默认为-1,代表系统默认设置。0代表不缓冲,1代表行缓冲,大于1的整数代表指定缓冲区的大小。如果是负数则将使用系统默认缓冲区大小。

encoding:指定文件编码。默认为None,使用系统默认编码。常用编码有‘UTF-8’,‘GBK’等。

errors:指定编码错误处理策略。默认为None,使用系统默认设置。常用处理策略有‘strict’(默认,抛出UnicodeError),‘ignore’(忽略错误字符),‘replace’(替换错误字符或序列)等。

newline:指定文本文件换行符。默认为None,使用系统默认设置。‘’为无换行符(即Unix/Linx下使用的换行符),‘\r’为回车(即Windows下使用的换行符),‘\r

’为回车+换行(即Windows下的换行符)。在二进制模式中不支持换行符参数。

closefd:在创建文件时是否关闭文件描述符。默认为True。如果设置为False则要求文件描述符必须已经打开,并将通过该描述符引用该文件。在Windows平台上必须设置为False。

opener:自定义的打开文件方式。默认为None,将使用系统默认打开方式。在Unix-like平台上默认使用os.open(),在Windows上默认使用Windows创建文件API。

返回值类型:返回一个文件对象。

读取文件的方法有两种:一种是读取整个文件,一种是逐行读取。下面分别讲解两种读取方法。

(1)读取整个文件

Python提供了三个函数方法可以读取整个文件:read()、readlines()和readline()。这三个方法区别如下:

read():读取整个文件,返回一个字符串。如果文件很大,这种读取方式会比较耗费内存。

readlines():读取整个文件,将其分成多行,并以列表的形式返回。如果文件很大,这种读取方式会比较耗费内存。

readline():每次读取文件的一行,并返回该行的字符串。这种方法比较节省内存。

(2)逐行读取

逐行读取文件是一种更加灵活的读取方式,能够逐行读取文件,并且可以在读取的过程中进行一些操作。逐行读取文件的方法主要有以下两种:

for循环逐行读取

读取单行数据的代码如下:

with open('file.txt', 'r') as f:

    for line in f:

        print(line)

readline()方法逐行读取

读取单行数据的代码如下:

with open('file.txt', 'r') as f:

    line = f.readline()

    while line:

        print(line)

        line = f.readline()

2.文件写入操作

Python中文件写入的函数是open(),使用open()函数可以打开一个指定名称的文件,然后使用文件对象执行写入操作。具体的函数调用方法如下:

open(file, mode='w', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

file:要打开的文件名或路径。

mode:打开文件的模式。默认为'r'。模式参数可以是‘r’(读取模式),‘w’(写入模式),‘x’(独占写入模式,文件存在则会抛出异常),‘a’(追加模式),‘b’(二进制模式),‘t’(文本模式),或者它们的组合,如‘rb’(二进制模式的读取)。

buffering:指定缓冲策略。默认为-1,代表系统默认设置。0代表不缓冲,1代表行缓冲,大于1的整数代表指定缓冲区的大小。如果是负数则将使用系统默认缓冲区大小。

encoding:指定文件编码。默认为None,使用系统默认编码。常用编码有‘UTF-8’,‘GBK’等。

errors:指定编码错误处理策略。默认为None,使用系统默认设置。常用处理策略有‘strict’(默认,抛出UnicodeError),‘ignore’(忽略错误字符),‘replace’(替换错误字符或序列)等。

newline:指定文本文件换行符。默认为None,使用系统默认设置。‘’为无换行符(即Unix/Linx下使用的换行符),‘\r’为回车(即Windows下使用的换行符),‘\r

’为回车+换行(即Windows下的换行符)。在二进制模式中不支持换行符参数。

closefd:在创建文件时是否关闭文件描述符。默认为True。如果设置为False则要求文件描述符必须已经打开,并将通过该描述符引用该文件。在Windows平台上必须设置为False。

opener:自定义的打开文件方式。默认为None,将使用系统默认打开方式。在Unix-like平台上默认使用os.open(),在Windows上默认使用Windows创建文件API。

返回值类型:返回一个文件对象。

Python中常用的文件写入方法是write()和writelines()。

write()方法

write()方法可以向文件写入一个字符串,并返回写入的字符个数。下面是示例代码:

with open('file.txt', 'a') as f:

    f.write('Hello, World

')

writelines()方法

writelines()方法可以向文件写入一个字符串序列(列表或迭代器),它将每个字符串都写入文件中,并返回写入的字符数。下面是示例代码:

with open('file.txt', 'a') as f:

    f.writelines(['Hello

', 'World

', 'Python

'])