python如何写入文件:四种常用写法

python如何写入文件,主流方式为open函数搭配with上下文管理器、open直接调用、pathlib写入、文件对象write方法,with写法是大多数开发场景优先选择,自动关闭文件,降低资源泄漏概率,直接调用open忘记close会出现缓冲区数据丢失,pathlib适合面向对象风格的现代Python项目,Python3.4及以上版本原生支持pathlib模块,这些写法都支持文本和二进制写入,文本写入默认编码容易在Windows系统出现乱码,需要手动指定encoding参数,适合零基础学习者、脚本开发人员、后端开发人员,不适合需要超高并发大批量持续写文件的场景,这类场景优先选用日志框架或者异步文件库。

python如何写入文件:with上下文管理器写法

你使用withopen()的结构打开文件,程序代码块结束后会自动执行文件关闭操作,不用手动调用close,基础文本写入语法为withopen("test.txt","w",encoding="utf-8")asf:f.write("写入内容"),模式参数w代表写入模式,文件存在就清空原有内容,文件不存在会新建文件,write只接收字符串,数字、列表等类型要先转字符串,换行需要手动添加\n,writelines可以一次性写入字符串序列,但是不会自动添加换行符。

追加写入把模式换成a,文件原有内容保留,新内容写到文件末尾,适合日志持续记录场景,模式a+同时支持读取和追加,r+模式读写指针默认在文件开头,写入会覆盖原有位置字符,容易误改已有数据,新手尽量少用r+。

python如何写入文件:open直接调用写法

f=open("test.txt","w",encoding="utf-8"),f.write("内容"),f.close(),这是最基础的原生写法,必须手动调用close释放文件句柄,代码中途抛出异常时,close语句无法执行,缓冲区数据可能留在内存不落地到磁盘,这个写法适合简短测试代码,正式脚本里选用with会稳妥很多。

二进制写入把模式改为wb,写入内容必须是bytes类型,字符串需要用encode转码,多用于图片、音频、压缩包这类非文本文件,不能直接传入普通字符串,否则会触发类型报错。

python如何写入文件:不同写入方式对比

写入方式是否自动关闭适合场景风险点
withopen是日常脚本、业务代码w模式会清空旧文件
open+close否临时简短测试异常时丢失数据
pathlib是现代项目、路径操作多低版本Python不兼容

pathlib模块从Python3.4版本内置,不需要额外安装,Path("test.txt").write_text("内容",encoding="utf-8")一行完成文本写入,read_text配套读取,路径拼接、判断文件是否存在的接口更加简洁,代码可读性更高,面向对象的调用方式和传统open函数思维差异明显。

编码参数不可省略。

Windows系统默认编码为gbk,Linux和macOS默认多为utf-8,不指定encoding="utf-8",中文写入后打开文件大概率乱码,读取文件时编码参数要和写入时保持一致,同一个文件读写编码不一致,也会触发解码异常。

大批量写入时,频繁调用write会增加IO开销,你可以先把所有文本拼接成一个字符串,一次性写入,或者设置缓冲区,flush方法可以强制把缓冲区数据刷入磁盘,不用等待自动缓存刷新,调试阶段可以用来验证数据是否正常落盘。

路径写法分相对路径和绝对路径,相对路径以程序运行目录作为基准,不是py文件所在目录,如果你在IDE里运行脚本,工作目录和文件存放目录不一致,会出现找不到文件、文件生成到别的文件夹的情况,使用绝对路径可以规避这个问题,路径分隔符在Windows支持\\或者r原始字符串,跨平台优先用pathlib处理路径。

写入权限不足时,程序会抛出PermissionError,目标文件夹不存在,w模式不会自动创建文件夹,只会新建文件,你需要先用os.makedirs或者pathlib的mkdir创建上级目录,再执行写入操作,目录创建时可以设置exist_ok=True,避免目录已存在时报错。

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

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