【Python】基础学习&技能提升&代码样例4:常见配置文件和数据文件读写ini、yaml、csv、excel、xml、json

Python办公自动化:用openpyxl和python-docx实现Excel到Word表格数据精准迁移 在数据处理与文档生成的工作流中,自动化脚本是提升效率的关键。其核心原理是通过编程接口(API)对结构化数据文件进行读写操作,实现跨应用的数据流转。这项技术的核心价值在于将人工重复操作转化为标准化、零差错的自动化流程,尤其适用于周报生成、客户信息整理、报告编制等需要频繁在Excel和Word间同步数据的场景。本文聚焦于使用Python生态中的openpyxl和python-docx这两个库,针对“python读取excel数据全部读取耗时5分钟”的性能痛点,提供了使用read_only模式与iter_rows 阅读详情

一、 配置文件

1.1 ini

官方-configparser

config.ini文件如下:

 [url] ; section名称
 baidu = https://www.zalou.cn
 port = 80
 [email]
 sender = ‘xxx@qq.com’
import configparser
# 读取
file = 'config.ini'
# 创建配置文件对象
con = configparser.ConfigParser() 
# 读取文件
con.read(file, encoding='utf-8') 
# 取值, 把con当做嵌套字典来用即可
con["url"]
con["url"]["port"]
# 获取所有section
sections = con.sections() # ['url', 'email']
# 获取特定section
items = con.items('url') # 返回结果为元组 # [('baidu','https://www.zalou.cn'),('port', '80')] # 数字也默认读取为字符串
# 可以通过dict方法转换为字典
items = dict(items)

# 写入
import configparser
config = configparser.ConfigParser()
config['DEFAULT'] = {'ServerAliveInterval': '45',
                     'Compression': 'yes',
                     'CompressionLevel': '9'}
config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'
config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Port'] = '50022'     # mutates the parser
topsecret['ForwardX11'] = 'no'  # same here
config['DEFAULT']['ForwardX11'] = 'yes'
with open('example.ini', 'w') as configfile:
     config.write(configfile)

特殊符号读取

注意,若配置中有特殊符号,如;或者#在ini的section后是用于注释的,在=后可直接读取进配置中

嵌套配置读取

 [url] ; section名称
 [url.search];搜索网址
 name = https://www.zalou.cn
 port = 80
 [url.news];搜索网址
 name = https://www.sina.com
 port = 80
import configparser
con = configparser.ConfigParser()
con.read("test.ini", encoding="utf-8")
print(con.sections()) # ['url', 'url.search', 'url.news']
print(con["url.news"]["name"]) # https://www.sina.com

1.2 yaml

官方-pyyaml
Python读写yaml文件
Python基础笔记1-Python读写yaml文件(使用PyYAML库)

pip install pyyaml
# 写入,字典数据
import yaml

desired_caps = {
    'platformName': 'Android哈哈哈',  # 移动设备系统IOS或Android
    'platformVersion': '7.1.2',  # Android手机系统版本号
    'deviceName': '852',  # 手机唯一设备号
    'app': 'C:\\Users\\wangli\\Desktop\\kbgz-v5.9.0-debug.apk',  # APP文件路径
    'appPackage': 'com',  # APP包名
    'appActivity': 'cui.setup.SplashActivity',  # 设置启动的Activity
    'noReset': 'True',  # 每次运行不重新安装APP
    'unicodeKeyboard': 'True',  # 是否使用unicode键盘输入,在输入中文字符和unicode字符时设置为true
    'resetKeyboard': 'True',  # 隐藏键盘
    'autoGrantPermissions': 'True',
    'autoAcceptAlerts': ["python", "c++", "java"],
    'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}
}
with open("test1.yaml", "w", encoding="utf-8") as f:
    yaml.dump(desired_caps, f, Dumper=yaml.RoundTripDumper)

# 写入-列表数据
list_data = ['python', 'java', 'c++', 'C#', {'androidProcess': 'com.tencent.mm:tools'}, ["python", "c++", "java"]]
with open("test2.yaml", "w", encoding="utf-8") as f:
    yaml.dump(list_data , f, Dumper=yaml.RoundTripDumper)

# 读取-得到字典
with open('test1.yaml', 'r', encoding='utf-8') as f:
     conf=yaml.load(f.read(),Loader=yaml.Loader) # dict, 和desired_caps 一致
# 读取-得到列表
with open('test2.yaml', 'r', encoding='utf-8') as f:
     conf=yaml.load(f.read(),Loader=yaml.Loader) # list, 和list_data 一致

test1.yaml写入后如下

deviceName: '852'
unicodeKeyboard: 'True'
autoAcceptAlerts:
- python
- c++
- java
autoGrantPermissions: 'True'
platformVersion: 7.1.2
platformName: "Android\u54C8\u54C8\u54C8"
app: C:\Users\wangli\Desktop\kbgz-v5.9.0-debug.apk
appPackage: com
chromeOptions:
  androidProcess: com.tencent.mm:tools
appActivity: cui.setup.SplashActivity
noReset: 'True'
resetKeyboard: 'True'

test2.yaml写入后如下

- python
- java
- c++
- C#
- androidProcess: com.tencent.mm:tools
- - python
  - c++
  - java

1.3 动态配置读取

用Dynaconf进行Python项目的配置管理
官方-dynaconf

dyanconf的最大特点是用一套代码,从不同的配置数据存储方式中读取配置,例如python配置文件、系统环境变量、redis、ini文件、json文件等等。具体用法参考上面第一个连接,这里不再赘述。

二、 数据文件

不想展开讨论,以下仅列举可读取的方式连接。

1.1 csv

方案1:csv库
方案2:pandas

1.2 excel

方案1:
官方教程openpyxl
Python3使用openpyxl读取和写入excel
方案2:pandas

1.3 xml

xml虽然常被用作配置文件,但他本身的设计是用来存储数据的。
方案1:
xml.dom
xml.dom.minidom
xml.sax
xml.sax.hanldler
xml.sax.reader
xml.etree.ElementTree
方案2:
pandas
xml文件介绍:
XML文件详解(详细易理解)
XML——基本语法及使用规则

1.4 json

json 虽然也被用作配置文件,但更多情况是用来传递数据。

import json
py_data= {
    'no' : 1,
    'name' : 'Runoob',
    'url' : 'http://www.runoob.com'
}

# 写入
with open('data.json', 'w') as fh:
	json_str = json.dumps(py_data)
    fh.write(json_str)

with open('data.json', 'w') as fh:
    json.dump(a, fh)

# 读取
with open("./data.json", "r") as f:
    content = json.load(f)
    print(type(content)) # <class 'dict'>
    print(content)

注意,上面的中文会写入文件中,变成unicode编码,如\u5206\u4eab10\u4e2a\u5f88\u5c0f\u4f17。要保证正文写入。可以按照下面方法:

# 写入
with open('data.json', 'w', encoding="utf-8") as fh:
    json.dump(a, fh, ensure_ascii=False)
# 读取
with open("./data.json", "r", encoding="utf-8") as f:
    content = json.load(f)

注意,写入时ensure_ascii=False和 encoding="utf-8"是必须的。
读取时 encoding="utf-8"是必须的,否则会报错:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xac in position 123: illegal multibyte sequence

参考

方案1:json模块
方案2:pandas
方案3:dynaconf

其他参考

python读取配置文件方式(ini、yaml、xml)

PyWxDump 4.0重构:构建工程化微信本地数据解析技术栈 数据解析是数据处理流程中的关键环节,涉及从原始数据源中提取、转换并输出结构化信息。其核心原理在于理解数据存储格式与加密机制,并应用相应的解密算法和解析逻辑。这项技术的价值在于将难以直接使用的加密或杂乱数据,转化为可供分析、迁移或备份的清晰格式,广泛应用于数字取证、数据迁移、个人数据管理及安全研究等领域。以微信本地数据为例,其聊天记录、联系人信息等均以加密的SQLite数据库形式存储,解析过程需攻克路径定位、密钥动态获取、数据库解密及消息结构化还原等技术难点。PyWxDump 4.0项目正是针对这些挑战,通过 阅读详情

相关推荐

Python爬虫实战指南:从基础到进阶,应对反爬与工程化实践

网络爬虫是一种自动化抓取网页信息的程序,其核心原理是模拟浏览器发送HTTP请求、获取响应、解析HTML并提取结构化数据。这项技术对于数据采集、市场分析和学术研究具有重要价值,广泛应用于舆情监控、价格追踪和内容聚合等场景。在工程实践中,开发者常需应对反爬机制,如User-Agent检测和IP频率限制,并采用Selenium处理动态内容。本文以豆瓣电影Top250为例,系统讲解Python爬虫从环境搭建、数据解析到存储的完整流程,涵盖Requests、BeautifulSoup等核心库的使用,以及异常处理和日志

weixin_33845881的博客 431

python脚本——Excel处理

python脚本第一弹——Excel处理 本文旨在为不熟悉python的开发人员提供excel便捷处理工具,以方便日常工作。

z099164的博客 3406

Json工程实战:解析原理、常见陷阱与生产级治理

Json作为最主流的数据交换格式,其本质是基于字符串、数字、布尔、null、数组和对象六种原子类型的轻量级文本协议。它不定义日期、二进制或函数等语义,而是通过ISO时间字符串、Base64编码、类型契约等方式实现跨语言互操作。这种‘最小完备性’设计带来浏览器原生支持、人机可读、生态无缝集成三大工程优势,但也引发undefined/null歧义、数字精度丢失、Unicode转义错误、大Json性能瓶颈等典型问题。真实项目中需结合JSON Schema校验、流式解析、字段脱敏、大小写自动转换等手段构建健壮的数据

diaoqi6581的博客 455

python吃excel文件生成测试配置task

今

luosuhua2008的专栏 453

CARLA地图包手动构建全流程:从OpenDRIVE到可运行UE4资产

CARLA地图并非简单文件集合,而是基于Unreal Engine 4编译的运行时Asset Bundle,其核心依赖OpenDRIVE路网语义与UE4原生资源(Static Mesh、Material、Blueprint)的精准绑定。理解这一原理,是解决地图加载失败、Actor spawn异常、传感器黑屏等工程问题的技术前提。CARLA不直接解析.xodr,而是通过OpenDriveToUnreal.json映射ID到UE4 Actor,并结合MapName.json提供Python API可控性。该机制

congmi8078的博客 444

基于FastLIO2与TEB算法的机器狗自主导航系统实战

本文详细介绍了如何为机器狗构建一套基于FastLIO2与TEB算法的自主导航系统。通过整合FastLIO2激光惯性里程计实现精准定位,并采用TEB局部规划器进行灵活路径规划与动态避障,解决了传统方案在复杂地形下反应慢、易碰撞的问题。文章提供了从环境搭建、算法部署、地图转换到系统调试的完整实战指南,帮助开发者实现机器狗的稳健自主行走。

beer8的博客 321

【文件操作、目录操作】-覆盖:ini文件、yaml/yml文件、excel文件、json文件的python操作封装

【代码】关于:ini、yaml/yml、excel文件的python操作封装。

白骨梦儿 691

语音识别(ASR)-- Kaldi 学习笔记

语音识别(ASR)-- Kaldi学习笔记语音识别简介GMM-HMM基本原理DNN-HMM(基于神经网络)KaldiKaldi架构简介Kaldi在Windows下的安装工具准备编译OpenFST配置PortAudio配置KaldiKaldi目录说明 语音识别简介 语音识别(Speech Recognition)技术,也被称为自动语音识别(Automatic Speech Recognition, ASR)、计算机语音识别(Computer Speech Recognition)或是语音转文本识别(Spee

qq_43318971的博客 4847

Python读写各类数据文件

Python 读写 YAML文件。

顺其自然~专栏 166

javaFx + SpringBoot 启动时报错:No auto configuration classes found in META-INF/spring.factories 解决方法

javaFx+SpringBoot+(de.roskenet:springboot-javafx-support:2.1.6)开发。 直接在idea中运行正常,但打包成jar,之后使用java -jar xxx.jar启动报错,发现日志中有: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. 以及 at de.felixroske.jfxsuppo

long117long的专栏 4612

达梦慢sql和统计信息收集

各计划节点的执行顺序为:缩进越多的越先执行,同样缩进的上面的先执行,下面的后执行,上下的优先级高于内外。在建立索引的时候,要考虑索引的最左匹配原则(在使用 SQL 语句时,如果 where 部分的条件不符合最左匹配原则,可能导致索引失效,或者不能完全发挥建立的索引的功效);执行计划是 SQL 语句的执行方式,由查询优化器为语句设计的执行方式,交给执行器去执行。生产系统中,对于频繁变动的数据表,多次执行计划可能会出现不一致的问题,这往往是由于统计信息不准导致的,索引定期收集统计信息就很有必要了。

m0_37680131的博客 1715

Python文件操作实战:从基础读写到CSV/JSON处理与路径管理

文件操作是编程中数据持久化的核心基础,它使程序能够将内存中的数据保存到硬盘,实现长期存储与跨会话访问。其原理是通过操作系统提供的接口,对文件系统进行读写、创建、删除等操作。掌握文件操作的技术价值在于,它让程序具备了与外部世界交换数据的能力,是从简单脚本迈向实用工具的关键。在应用场景上,无论是处理配置文件(如JSON、YAML)、分析数据文件(如CSV、Excel),还是管理日志、用户上传内容,都离不开稳健的文件操作。本文聚焦Python文件操作,通过100道实战练习,系统讲解基础读写、路径管理、上下文管理器

weixin_34082854的博客 362

[原创]Step by step 实现自己的AI知识库问答(二)

对小白很友好的AI智能问答开发保姆级教程,适合初级开发者、学生阅读参考,无限制分享,欢迎转载。在这个章节中,我们使用了百度千帆作为知识库,通过简单的代码调用API实现了智能问答。

BaiRiYiSanJin的博客 1471

Python 各种格式文件转换

python操作txt文本文件、csv文件、xml文件、html文件、json文件、yaml文件、properties文件、ini/cfg文件、xml文件

fggdgh的博客 1127

差分音频转单端音频单电源方案

其中,芯片设计中的轨到轨输出(Rail-to-Rail Output) 是指通过特定的电路设计,使芯片(如运算放大器、驱动电路等)的输出电压能够达到或接近电源电压的上下极限(即“电源轨”),从而最大化信号的动态范围。最终,Vout=R2/R1*(Vin2−Vin1),即输出电压为输入电压差(Vin2−Vin1)乘以电阻比R2/R1。2、电阻:R1、R2、R3、R4是电路中的电阻,其中R1 = R3,R2 = R4。因R1=R3,R2=R4,且Vn=Vp,设R1=R3=R,R2=R4=kR。

电子绿洲的博客 4959

PDN分析实战:电源完整性设计与Altium PDN Analyzer全流程指南

电源完整性(PI)是嵌入式硬件系统稳定运行的基础能力,其核心在于控制电流密度与电压降两大物理量。基于欧姆定律与热-电耦合原理,PDN分析将抽象的电源噪声问题转化为可量化、可定位的几何与电气参数优化过程。该技术显著提升系统抗干扰能力、降低复位与ADC漂移等隐性故障率,并直接支撑EMC合规性设计。典型应用场景包括电机驱动板、Wi-Fi模块、STM32/ESP32等资源受限型MCU供电网络验证。本文以Altium Designer为工具平台,结合IPC-2152标准与真实工程案例,详解从功率预算、模型构建到瓶颈定

weixin_28949937的博客 229

[深度学习] 数据序列化格式对比:以日志级别配置为例

以下表格数据以 JSON 格式表示:```json"格式": "XML","人类可读": "中等","二进制体积": "大","支持嵌套": "是","典型场景": "企业配置、SOAP、Office"},"格式": "YAML","人类可读": "优秀","二进制体积": "文本","支持嵌套": "是","典型场景": "配置文件(Docker/K8s)"},"格式": "CSV","人类可读": "良好",

qq_55948352的博客 246

Qualcomm AI Engine Direct SDK(QNN)的使用介绍

Qualcomm AI Engine Direct SDK,高通新的AI模型推理框架,又名QNN,为AI开发提供统一API的底层框架。通过这个SDK,可以在高通的 CPU/GPU和HTP上对AI模型进行性能加速。2.Qualcomm AI Engine Direct SDK的公开英文文档。1.Qualcomm AI Engine Direct SDK的下载和安装。

u013250861的博客 6974

零基础Python学习路径:从环境搭建到爬虫数据分析实战

Python作为一门广泛应用于数据科学、自动化脚本和Web开发的高级编程语言,其核心价值在于简洁的语法和强大的生态系统。理解Python的工作原理,关键在于掌握其解释型语言的特性,以及通过包管理工具pip和虚拟环境venv来管理依赖。在技术实践中,Python通过requests库实现网络请求,结合BeautifulSoup进行HTML解析,构成了数据采集的基础能力。而pandas库则为数据清洗、转换和分析提供了高效的数据结构,如DataFrame,使得处理结构化数据变得直观。这些技术的结合,形成了从数据获

weixin_30876945的博客 496

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

基于Python+Pytest构建高效接口自动化测试框架:从设计到实战

接口自动化测试是现代软件工程中保障系统稳定性和交付效率的关键实践。其核心原理是通过脚本模拟客户端请求,对服务端接口进行功能、性能及数据一致性的自动化验证。这项技术的核心价值在于将测试人员从重复的手工劳动中解放出来,实现快速回归、精准测试和持续反馈,从而显著提升软件质量与交付速度。在敏捷开发和DevOps实践中,接口自动化测试已成为保障微服务架构、前后端分离项目质量的基石。典型的应用场景包括日常构建验证、版本发布回归、线上监控巡检等。本文将以一个成熟的**Python+Pytest**技术栈为例,深入剖析如何

weixin_33981932的博客 417

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python零基础实战:从环境搭建到爬虫数据分析完整项目指南

Python作为一门广泛应用于自动化、数据科学和Web开发的高级编程语言,其核心价值在于将复杂问题通过简洁的语法和丰富的生态库转化为可执行的解决方案。理解Python的工作原理,关键在于掌握其解释器环境、包管理机制和模块化编程思想,这构成了工程化开发的基础。在数据驱动决策的今天,网络爬虫与数据分析成为从海量信息中提取价值的关键技术组合。通过requests库模拟HTTP请求获取数据,再借助pandas进行结构化处理和matplotlib实现可视化,开发者能够构建端到端的数据流水线。本文聚焦于Python环境

cong84596496的博客 420

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python爬虫与数据分析实战:从环境搭建到项目落地的完整学习路径

在数据驱动的时代,掌握数据处理全流程是开发者的核心能力。其基本原理是通过编程实现数据的自动化采集、清洗、转换与洞察。Python凭借其简洁语法和丰富生态,成为实现这一流程的首选工具,在自动化办公、数据挖掘等领域具有重要技术价值。具体到应用场景,网络爬虫负责从互联网获取原始数据,而数据分析库则用于后续的处理与可视化,二者共同构成从数据获取到价值提炼的完整闭环。本文聚焦于Python爬虫与数据分析的实战整合,详细解析如何利用requests、BeautifulSoup、pandas等核心库,构建从环境配置、数据

weixin_34259232的博客 401

Python办公自动化 – 可以解析的文件格式和可以调用的API实现办公自动化

Python办公自动化是利用Python编程语⾔来创建脚本和程序,以简化、加速和自动化日常办公任务和工作流程的过程。它基于Python的强大功能和丰富的第三方库,使得能够处理各种办公任务,如⽂档处理、数据分析、电子邮件管理、网络通信等等。以上就是今天分享的内容,希望对看到的小伙伴有帮助,后续会持续更新完python办公自动化的文章分享,可以持续关注哦。

分享型博主 1216

Python RPA与pytest-cucumber集成:提升自动化开发质量与协作效率

行为驱动开发(BDD)是一种敏捷软件开发方法,它通过定义可执行的行为规范来促进业务、开发和测试团队之间的协作。其核心原理是使用自然语言描述业务场景,并将其转化为自动化测试用例,从而确保软件功能符合业务预期。在自动化测试领域,BDD框架如Cucumber结合Gherkin语法,能够将业务需求直接映射为可执行的测试步骤,极大地提升了测试用例的可读性和可维护性。对于机器人流程自动化(RPA)项目而言,这种模式的技术价值尤为突出。RPA脚本通常需要处理复杂的、多变的业务流程,传统的脚本开发方式容易导致代码与业务逻辑

weixin_34115824的博客 364

MarkItDown 快速上手完全指南:三步把 PDF、PPT、Excel 转成 Markdown

MarkItDown 是微软开源的一款 Python 文档转换工具,能把 PDF、Word、Excel、PPT 以及音频、图片等文件转换成保留标题、列表、表格等结构的 Markdown 文本。它的设计目标不是排版美化,而是让大模型和文本分析管线能直接"读懂"这些文件,解决的是文档格式五花八门、模型却只吃文本这一实际问题。 ## 项目速览 一句话定位:把散落在各种格式里的文档内容,批量变成 LL

gitblog_00079的博客 279

Python安全写入文件:从编码、原子性到生产级防护全指南

文件写入是Python工程中基础却高危的操作,其本质涉及编码处理、缓冲机制、操作系统I/O调度与原子性保障等底层原理。掌握UTF-8编码显式声明、with语句资源管理、flush与fsync数据落盘控制、JSON/CSV结构化协议适配,以及os.replace实现的原子替换,是构建可靠存储逻辑的技术前提。这些能力直接决定配置更新是否安全、日志是否可追溯、导出数据是否跨平台可用——尤其在金融、IoT、Web后端等对数据一致性要求严苛的场景中,安全写入已不是最佳实践,而是生产环境的准入底线。

weixin_34226182的博客 432
上一篇: 【Python】基础学习&技能提升&代码样例3:JSON文本处理
下一篇: 【Python】基础学习&技能提升&代码样例5:argparse优雅的解析命令行参数
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值