open 函数支持的文件打开模式:
2.read()函数:按字节(字符)读取文件
Python 提供了如下 3 种函数,它们都可以帮我们实现读取文件中数据的操作:
◆ read() 函数:逐个字节或者字符读取文件中的内容;
◆ readline() 函数:逐行读取文件中的内容;
◆ readlines() 函数:一次性读取文件中多行内容 。
1)Python read()函数
read() 函数的基本语法格式如下:
file.read([size])
其中,file 表示已打开的文件对象;size 作为一个可选参数,用于指定一次最多可读取的字符(字节)个数,如果省略,则默认一次性读取所有内容 。
2)read()函数抛出UnicodeDecodeError异常的解决方法
在使用 read() 函数时,如果 Python 解释器提示UnicodeDecodeError异常或者显示为乱码,其原因在于,目标文件使用的编码格式和 open() 函数打开该文件时使用的编码格式不匹配 。

文章插图
file = "read.txt" f1 = open(file, encoding='utf-8') # 解码方式必须与文件编码方式一直,否则会报UnicodeDecodeError异常 print(f1.read()) # 读取所有内容 f1.close() f2 = open(file, encoding='utf-8') print(f2.read(5)) # 读取前5个字符 f2.close()3.readline()和readlines()函数:按行读取文件和 read() 函数不同,这 2 个函数都以“行”作为读取单位,即每次都读取目标文件中的一行 。对于读取以文本格式打开的文件,读取一行很好理解;对于读取以二进制格式打开的文件,它们会以“n”作为读取一行的标志 。
1)Python readline()函数
readline() 函数用于读取文件中的一行,包含最后的换行符“n” 。此函数的基本语法格式为:
file.readline([size])
其中,file 为打开的文件对象;size 为可选参数,用于指定读取每一行时,一次最多读取的字符(字节)数 。
# python readline()逐行读取,返回str类型 f3 = open(file, encoding='utf-8') print(f3.readline()) # 读取第一行 print(f3.readline()) # 读取第二行 f3.close()2)Python readlines()函数readlines() 函数用于读取文件中的所有行,它和调用不指定 size 参数的 read() 函数类似,只不过该函数返回是一个字符串列表,其中每个元素为文件中的一行内容 。
readlines() 函数的基本语法格式如下:
file.readlines()
其中,file 为打开的文件对象 。和 read()、readline() 函数一样,它要求打开文件的模式必须为可读模式(包括 r、rb、r+、rb+ 4 种) 。
# python readlines()读取所有行,返回list类型 f4 = open(file, encoding='utf-8') print(f4.readlines()) # ['hello pythonn', 'hello JAVAn', 'hello djangon', 'hello gon', 'hello rubyn', '爱我中华n'] f4.close() f5 = open(file, encoding='utf-8') for i in f5: print(i) # readlines返回列表类型,使用for循环遍历列表内容 f5.close()4.读取大文件(GB)Python读取文件一般是利用open()函数以及read()函数来完成,但该方式仅适合读取小文件 。因为调用read()会一次性读取文件的全部内容,调用readlines()一次读取所有内容并按行返回list 。如果文件过大,如10G,会造成MemoryError 内存溢出,正确的做法:可以反复调用read(size)法,每次指定读取size个字节的内容 。
处理大文件核心思路:通过参数指定每次读取的大小长度,这样就避免了因为文件太大读取出问题 。
# 读取大文件 def read_in_chunks(file_path, chunk_size=1024 * 1024): """读取大文件,读取指定大小""" file_object = open(file_path) while True: chunk_data = file_object.read(chunk_size) if not chunk_data: break yield chunk_data def read_in_chunk(file_path): """结合生成器、读取大文件""" lines = (line for line in open(file_path)) while True: for line in lines: print(line) if not line: break yield line5.seek()和tell()函数详解
文章插图
实现对文件指针的移动,文件对象提供了 tell() 函数和 seek() 函数 。tell() 函数用于判断文件指针当前所处的位置,而seek() 函数用于移动文件指针到文件的指定位置 。
推荐阅读
- 怎么创建加密文件夹并命名 怎么创建加密文件夹
- pgf转换器免费版?PGF是什么文件,为什么它占的内存这么大并且不能删除?
- 民政局|官方回应“通报表扬火化场每日火化量30例以上”:工作人员确实加班加点,内部文件已删除
- td是啥
- 火炬之光2存档文件、火炬之光2怎么存档
- dwg浏览器查看,DWG格式文件用什么软件打开?
- Excel表格文件,.xls和.xlsx格式的区别 xls和xlsx区别
- kite的英文怎么读音 python kite 安装
- excel文件加密解除~~excel加密忘记密码怎么解开
- xp临时文件夹无写入权限 xp临时文件夹
