影刀RPA 文本文件的读写:TXT、CSV、JSON的读取与写入
影刀RPA 文本文件的读写TXT、CSV、JSON的读取与写入作者林焱Excel不是唯一的数据存储格式。很多场景下你需要处理文本文件——日志文件是TXT、导出的数据是CSV、API返回的数据是JSON。影刀RPA在处理这些文本文件时主要依赖Python节点的文件操作能力。这篇文章把TXT、CSV、JSON三种最常见文本格式的读写方法讲全。一、TXT文件读写1.1 读取TXT文件# 读取整个文件withopen(D:\\data\\log.txt,r,encodingutf-8)asf:contentf.read()set_variable(file_content,content)# 逐行读取withopen(D:\\data\\log.txt,r,encodingutf-8)asf:linesf.readlines()set_variable(file_lines,lines)# 逐行处理大文件推荐result[]withopen(D:\\data\\log.txt,r,encodingutf-8)asf:forlineinf:lineline.strip()# 去掉行尾换行符ifline:result.append(line)set_variable(processed_lines,result)坑1编码问题文件编码可能是UTF-8、GBK、GB2312等。用错误的编码打开会乱码或报错。# 自动检测编码importchardetwithopen(D:\\data\\log.txt,rb)asf:rawf.read()encodingchardet.detect(raw)[encoding]withopen(D:\\data\\log.txt,r,encodingencoding)asf:contentf.read()坑2BOM头UTF-8 with BOM的文件开头有一个\ufeff字符读取后内容开头会多一个不可见字符。用utf-8-sig编码打开自动去掉BOMwithopen(D:\\data\\log.txt,r,encodingutf-8-sig)asf:contentf.read()![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3c3a9af1f0df447a8ac4faffc8d12a8a.png#pic_center)1.2 写入TXT文件# 覆盖写入withopen(D:\\data\\output.txt,w,encodingutf-8)asf:f.write(第一行内容\n)f.write(第二行内容\n)# 追加写入withopen(D:\\data\\log.txt,a,encodingutf-8)asf:f.write(新追加的内容\n)# 写入多行lines[第一行,第二行,第三行]withopen(D:\\data\\output.txt,w,encodingutf-8)asf:f.write(\n.join(lines))坑写入后没换行f.write(内容)不会自动加换行符需要手动加\n。如果用print函数写文件会自动加换行withopen(D:\\data\\output.txt,w,encodingutf-8)asf:print(第一行,filef)print(第二行,filef)1.3 TXT文件处理实战拼多多店群自动化上架方案# 日志文件解析importrewithopen(D:\\logs\\app.log,r,encodingutf-8)asf:logsf.readlines()# 提取ERROR级别的日志errors[]forlineinlogs:ifERRORinline:# 提取时间和错误信息matchre.match(r\[(.*?)\] ERROR (.*),line)ifmatch:errors.append({time:match.group(1),message:match.group(2)})set_variable(error_logs,errors)二、CSV文件读写2.1 用csv模块读取importcsv# 读取CSV文件withopen(D:\\data\\products.csv,r,encodingutf-8-sig)asf:readercsv.reader(f)headersnext(reader)# 第一行是表头data[rowforrowinreader]# data是一个二维列表# data[0] [商品A, 99.9, 100]set_variable(csv_headers,headers)set_variable(csv_data,data)2.2 用DictReader读取推荐importcsvwithopen(D:\\data\\products.csv,r,encodingutf-8-sig)asf:readercsv.DictReader(f)data[dict(row)forrowinreader]# data是一个字典列表# data[0] {商品名: 商品A, 价格: 99.9, 库存: 100}set_variable(csv_data,data)2.3 用pandas读取CSV最推荐importpandasaspd# 基本读取dfpd.read_csv(D:\\data\\products.csv,encodingutf-8-sig)# 指定分隔符TSV文件用制表符dfpd.read_csv(D:\\data\\products.tsv,sep\t)# 跳过前几行dfpd.read_csv(D:\\data\\products.csv,skiprows2)# 指定列名dfpd.read_csv(D:\\data\\products.csv,names[名称,价格,库存],headerNone)# 指定某列为索引dfpd.read_csv(D:\\data\\products.csv,index_col商品ID)# 数据类型转换dfpd.read_csv(D:\\data\\products.csv,dtype{价格:float,库存:int})set_variable(csv_data,df.to_dict(records))2.4 写入CSVimportcsv dataget_variable(output_data)headers[商品名,价格,库存]withopen(D:\\data\\output.csv,w,encodingutf-8-sig,newline)asf:writercsv.DictWriter(f,fieldnamesheaders)writer.writeheader()writer.writerows(data)坑1newline参数Windows下写CSV必须加newline否则每行之间会多一个空行。坑2逗号在数据中CSV用逗号分隔字段如果数据本身包含逗号如商品A,蓝色需要用引号包裹。csv模块自动处理# csv.writer会自动给包含逗号的数据加引号writer.writerow([商品A,蓝色,99.9,100])# 输出: 商品A,蓝色,99.9,100坑3CSV编码问题Excel打开UTF-8编码的CSV文件会乱码。用utf-8-sig编码写入带BOM头Excel就能正确识别withopen(D:\\data\\output.csv,w,encodingutf-8-sig,newline)asf:2.5 CSV与Excel互转importpandasaspd# CSV转Exceldfpd.read_csv(D:\\data\\products.csv,encodingutf-8-sig)df.to_excel(D:\\data\\products.xlsx,indexFalse)# Excel转CSVdfpd.read_excel(D:\\data\\products.xlsx)df.to_csv(D:\\data\\products.csv,indexFalse,encodingutf-8-sig)三、JSON文件读写3.1 读取JSON文件importjsonwithopen(D:\\data\\config.json,r,encodingutf-8)asf:configjson.load(f)# config是一个字典# {server: 192.168.1.1, port: 8080, debug: true}set_variable(config,config)3.2 写入JSON文件importjson dataget_variable(output_data)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/eb283a5a4cb8420ab5ece4d80bc0d01e.png#pic_center)withopen(D:\\data\\output.json,w,encodingutf-8)asf:json.dump(data,f,ensure_asciiFalse,indent2)坑1ensure_ascii参数json.dump默认ensure_asciiTrue中文字符会被转义成\uXXXX。设置ensure_asciiFalse保留中文# ensure_asciiTrue默认: {name: \u5546\u54c1A}# ensure_asciiFalse: {name: 商品A}json.dump(data,f,ensure_asciiFalse,indent2)坑2indent参数indent2让JSON输出有缩进方便人阅读。不设置indent则输出紧凑格式文件更小但不可读。3.3 JSON与Python对象的转换importjson# Python字典 → JSON字符串data{name:商品A,price:99.9,tags:[热销,推荐]}json_strjson.dumps(data,ensure_asciiFalse)# JSON字符串 → Python字典parsedjson.loads(json_str)# 嵌套JSON处理nested{product:{name:商品A,variants:[{color:红,stock:10},{color:蓝,stock:20}]}}# 访问嵌套数据forvariantinnested[product][variants]:print(f{variant[color]}:{variant[stock]})3.4 JSON作为配置文件importjson# 读取配置withopen(D:\\config\\settings.json,r,encodingutf-8)asf:configjson.load(f)# 使用配置serverconfig.get(server,localhost)# 默认值localhostportconfig.get(port,8080)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8d276b553730473788516f2e0ae8e44b.png#pic_center)timeoutconfig.get(timeout,30)retry_countconfig.get(retry,3)# 修改配置并保存config[last_run]2026-07-01withopen(D:\\config\\settings.json,w,encodingutf-8)asf:json.dump(config,f,ensure_asciiFalse,indent2)坑JSON不支持注释标准JSON格式不支持注释。如果配置文件需要注释用JSON5格式或YAML或者在配置字段里加_comment字段{_comment:这是服务器配置,server:192.168.1.1,port:8080}四、格式选择指南TEMU店群如何管理运营格式适合场景优势劣势TXT日志、简单文本最简单无结构CSV表格数据通用、Excel兼容无类型、无嵌套JSON配置、API数据有结构、支持嵌套比CSV冗余Excel报表、复杂表格有格式、有公式二进制、依赖库五、实战场景5.1 API响应保存为JSONimportjsonimportrequests responserequests.get(https://api.example.com/products)dataresponse.json()# 保存到文件withopen(D:\\data\\api_response.json,w,encodingutf-8)asf:json.dump(data,f,ensure_asciiFalse,indent2)# 提取需要的数据转成CSVimportpandasaspd dfpd.DataFrame(data[products])df.to_csv(D:\\data\\products.csv,indexFalse,encodingutf-8-sig)5.2 多格式数据合并importjsonimportpandasaspd# 从JSON读取withopen(D:\\data\\api_data.json,r,encodingutf-8)asf:json_datajson.load(f)df_apipd.DataFrame(json_data[products])# 从CSV读取df_csvpd.read_csv(D:\\data\\local_data.csv,encodingutf-8-sig)# 从Excel读取df_excelpd.read_excel(D:\\data\\manual.xlsx)# 合并所有数据df_allpd.concat([df_api,df_csv,df_excel],ignore_indexTrue)# 输出为Exceldf_all.to_excel(D:\\data\\merged.xlsx,indexFalse)5.3 日志写入fromdatetimeimportdatetimedefwrite_log(message,levelINFO):写入日志文件timestampdatetime.now().strftime(%Y-%m-%d %H:%M:%S)log_linef[{timestamp}] [{level}]{message}\nwithopen(D:\\logs\\rpa.log,a,encodingutf-8)asf:f.write(log_line)# 使用write_log(流程开始执行)write_log(采集到50条数据,INFO)write_log(网站连接超时,ERROR)write_log(流程执行完毕)六、避坑清单坑1文件操作后忘记关闭不使用with语句时文件需要手动f.close()。如果忘记关闭文件锁不释放其他操作会报错。永远用with open(...) as f自动管理。坑2大文件一次性读取几百MB的日志文件一次性f.read()会占用大量内存。逐行读取更安全withopen(big_file.log,r)asf:forlineinf:process(line)坑3CSV中的数字变成文本CSV没有数据类型所有值都是文本。用pandas读取时指定数据类型dfpd.read_csv(data.csv,dtype{价格:float,库存:int})坑4JSON序列化失败Python对象中包含日期、自定义类等无法直接序列化为JSON。需要先转换fromdatetimeimportdatetime data{date:datetime.now().isoformat()}# 日期转字符串json.dumps(data)坑5并发写入冲突多个流程同时写同一个文件数据会错乱。用文件锁或者分文件写入。

相关新闻

电子投标避坑|10 个查重漏洞,极易被查出围标串标

电子投标避坑|10 个查重漏洞,极易被查出围标串标

相比于沿用多年的传统纸质招投标,电子招投标的普及时间并不算长。但正是这种线上化的投标模式,和线下传统投标存在巨大差异,让大量中小投标人踩坑、违规中招。很多人还停留在「没人举报就没事」的老旧认知里,但现在的招投标监管&a…

2026/7/21 9:54:01 阅读更多 →
Kotlin inline、reified 与委托属性:ViewModel 与类型安全 API

Kotlin inline、reified 与委托属性:ViewModel 与类型安全 API

文章目录第 1 章 从作用域函数到 inline:高阶函数为何默认内联原理补充踩坑动手练第 2 章 inline 展开与参数修饰:crossinline 与 noinline原理补充踩坑动手练第 3 章 reified:运行时类型与类型安全 API原理补充踩坑动手练第 4 章 by lazy&am…

2026/7/21 5:42:49 阅读更多 →
Mac mini与MacBook Neo选购指南:固定工位与移动办公场景深度对比

Mac mini与MacBook Neo选购指南:固定工位与移动办公场景深度对比

1. 先搞清楚你的真实需求:固定工位还是移动办公?差价一千多,我最终选了更贵的 Mac mini 而不是 MacBook Neo,这个决定背后其实不是简单的价格比较,而是使用场景的彻底梳理。如果你也在纠结这两款设备,先别急…

2026/7/21 6:00:40 阅读更多 →

最新新闻

AIGC检测报告怎么看?读懂标红再把AI率降下来

AIGC检测报告怎么看?读懂标红再把AI率降下来

AIGC检测报告怎么看?读懂标红再把AI率降下来 你手里大概正攥着一份AIGC检测报告,最上面挂着一个刺眼的百分比,下面是一段段被标成红色或黄色的文字,你盯着看了半天,还是有点懵:这个总数是怎么算出来的&…

2026/7/22 1:04:02 阅读更多 →
AI生活产品从MVP到1.0的迭代复盘:技术债务清单与重构优先级排序

AI生活产品从MVP到1.0的迭代复盘:技术债务清单与重构优先级排序

AI生活产品从MVP到1.0的迭代复盘:技术债务清单与重构优先级排序 一、MVP的"成功"是技术债务的起点:一个AI食谱工具的真实账单 一个AI食谱推荐工具在MVP阶段仅用三周就上线了核心功能:图片识别食材→推荐菜谱→生成购物清单。日活跃…

2026/7/22 1:04:02 阅读更多 →
EMQTT:轻量级MQTT客户端库与命令行工具实战指南

EMQTT:轻量级MQTT客户端库与命令行工具实战指南

1. EMQTT概述与核心特性EMQTT是一个基于Erlang语言实现的MQTT客户端库和命令行工具,支持MQTT v5.0/3.1.1/3.1协议。作为EMQX生态的重要组成部分,它提供了轻量级的MQTT通信能力,特别适合需要嵌入式MQTT客户端或自动化测试场景的开发需求。在实…

2026/7/22 1:04:02 阅读更多 →
嵌入式软件测试痛点与专业工具解决方案

嵌入式软件测试痛点与专业工具解决方案

1. 嵌入式软件测试的行业痛点与专业工具必要性在汽车电子、航空航天、医疗设备等安全关键领域,嵌入式软件正面临前所未有的质量挑战。我曾参与过某车载ECU项目,团队在开发后期发现一个简单的状态机逻辑错误,导致项目延期三个月——这种教训在…

2026/7/22 1:04:02 阅读更多 →
USB设备开发实战:从控制器初始化到端点0控制传输详解

USB设备开发实战:从控制器初始化到端点0控制传输详解

1. USB控制器初始化:从硬件复位到会话就绪搞嵌入式USB设备开发,最让人头疼的往往不是复杂的协议栈,而是最开始的硬件初始化。手册上那几页寄存器配置,每个位域都认识,但组合起来怎么调都不对,设备管理器里就…

2026/7/22 1:04:02 阅读更多 →
Hallmark:解决 AI 生成网页一眼假的问题

Hallmark:解决 AI 生成网页一眼假的问题

最近在 GitHub Trending 上看到一个有意思的项目:Hallmark。一周涨了 9000 多 Star,目前累计 1.4 万。它解决的问题很具体--AI 生成的网页总是长得差不多。用 AI 写过前端的人应该都有体会:不管需求是什么,最后生成的页面往往都像…

2026/7/22 1:03:00 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻