Python中的文件I/O函数操作
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
'])
