python如何读取txt文件:多种读取方式对比

python如何读取txt文件,主流分为read()一次性全读、readline()逐行读取、readlines()读取全部行存入列表三种写法,with语句是优先写法,自带文件自动关闭逻辑,能减少资源泄露,你在读取大体积txt(单文件超过500MB)时,不建议使用read(),它会把全部文本加载进内存,容易造成内存占用过高,小文件、配置类文本、行数较少的日志文件,三种写法都可以正常使用,编码参数encoding必须显式写明,Windows系统默认文本编码常为gbk,UTF-8是跨平台更稳定的选择,编码不匹配会直接抛出UnicodeDecodeError报错。

python读取txt文件基础语法

withopen()上下文管理器不需要手动调用close(),代码结构简洁,也是工程代码里最常用的写法,基础模板为withopen("文件路径.txt","r",encoding="utf-8")asf:content=f.read(),引号内第一个参数是txt路径,写相对路径时txt文件要和py脚本放在同一个文件夹,写绝对路径在Windows里路径分隔符优先用双反斜杠或者原始字符串,避免转义字符干扰。第二个参数"r"代表只读模式,只允许读取内容,不能修改写入。

read()没有传入参数时,一次性读取文件内全部内容,返回字符串,适合几百KB以内的小txt,你可以在括号内填入数字,比如read(100),代表只读取前100个字符,不是字节,中文在utf-8编码下一个字符占3个字节,二者不能等同。

用readline()单次只读取一行,包含末尾的换行符\n,循环搭配while可以逐行遍历,内存占用稳定,适合超大文本,读取到文件末尾时,readline()会返回空字符串,你可以用这个空值作为循环终止条件。

python读取txt不同方法对比

读取方法返回类型内存表现适合场景
read()字符串较高小文件,一次性处理全文
readline()单行字符串较低大文件,逐行流式处理
readlines()字符串列表中等需要随机访问各行内容

readlines()会读取文件所有行,把每一行单独作为列表里的元素,每行自带换行符,拿到结果后可以用for循环遍历列表,如果你不需要一次性拿到全部行,这个方法对大文件并不友好,它依旧会把整份文件加载进内存。

路径写错会触发FileNotFoundError,文件不存在或者路径层级写错都会出现这个报错,相对路径调试时,你可以打印os.getcwd()查看脚本当前工作目录,核对txt存放位置。

编码错误是高频问题。

txt文件保存编码为gbk时,encoding参数改为gbk,强行用utf-8读取会解码失败,记事本另存为界面右下角可以查看和修改文本编码,这是快速核对编码的简单方式,部分特殊的繁体文本会使用gb2312编码,它属于gbk的子集,兼容范围更小。

不用with直接open打开文件,必须手动执行f.close()释放文件句柄,如果代码中途异常退出,close语句没有执行,文件句柄会持续占用,短脚本里偶尔使用问题不大,长期运行的爬虫、定时任务脚本不推荐这种写法。

你遍历文件对象本身也可以逐行读取,写法是forlineinopen("test.txt","r",encoding="utf-8"),这种写法和readline()逻辑接近,内存开销低,代码行数更少,在逐行筛选文本内容的场景里很实用,读取出来的行自带换行符,调用strip()方法可以清除行首尾空白、换行和空格。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于python如何读取txt文件的文章欢迎访问:百科