【Python】基础学习技能提升代码样例4:常见配置文件和数据文件读写ini、yaml、csv、excel、xml、json
一、 配置文件
1.1 ini
官方-configparser
config.ini文件如下:
[url] ; section名称baidu = https://www.zalou.cnport = 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.cnport = 80[url.news];搜索网址name = https://www.sina.comport = 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 yamldesired_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)
相关文章:
【Python】基础学习技能提升代码样例4:常见配置文件和数据文件读写ini、yaml、csv、excel、xml、json
一、 配置文件 1.1 ini 官方-configparser config.ini文件如下: [url] ; section名称baidu https://www.zalou.cnport 80[email]sender ‘xxxqq.com’import configparser # 读取 file config.ini # 创建配置文件对象 con configparser.ConfigParser() # 读…...
JavaScript基础——JavaScript调用的三种方式
JavaScript简介 JavaScript的作用 JavaScript的使用方式 内嵌JS 引入外部js文件 编写函数 JavaScript简介 JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。它是Web开发中最常用的脚本语言之一&#x…...
ITSS:IT服务工程师
证书亮点:适中的费用、较低的难度、广泛的应用范围以及专业的运维认证。 总体评价:性价比良好! 证书名称:ITSS服务工程师 证书有效期:持续3年 培训要求:必须参加培训,否则将无法参与考试 发…...
鸿蒙开发——axios封装请求、拦截器
描述:接口用的是PHP,框架TP5 源码地址 链接:https://pan.quark.cn/s/a610610ca406 提取码:rbYX 请求登录 HttpUtil HttpApi 使用方法...
Scikit-Learn中的分层特征工程:构建更精准的数据洞察
Scikit-Learn中的分层特征工程:构建更精准的数据洞察 在机器学习中,特征工程是提升模型性能的核心技术之一。Scikit-Learn(简称sklearn),作为Python中广受欢迎的机器学习库,提供了多种方法来进行特征工程&…...
CSOL遭遇DDOS攻击如何解决
CSOL遭遇DDOS攻击如何解决?在错综复杂的数字网络丛林中,《Counter-Strike Online》(简称CSOL)犹如一座坚固的堡垒,屹立在游戏世界的中心,吸引着无数玩家的目光与热情。这座堡垒并非无懈可击,DDo…...
基于python的BP神经网络红酒品质分类预测模型
1 导入必要的库 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.preprocessing import LabelEncoder from tensorflow.keras.models import Sequential from tenso…...
Kylin与Spark:大数据技术集成的深度解析
引言 在大数据时代,企业面临着海量数据的处理和分析需求。Kylin 和 Spark 作为两个重要的大数据技术,各自在数据处理领域有着独特的优势。Kylin 是一个开源的分布式分析引擎,专为大规模数据集的 OLAP(在线分析处理)查…...
⌈ 传知代码 ⌋ 利用scrapy框架练习爬虫
💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…...
深入了解 Python 面向对象编程(最终篇)
大家好!今天我们将继续探讨 Python 中的类及其在面向对象编程(OOP)中的应用。面向对象编程是一种编程范式,它使用“对象”来模拟现实世界的事务,使代码更加结构化和易于维护。在上一篇文章中,我们详细了解了…...
手把手教你实现基于丹摩智算的YoloV8自定义数据集的训练、测试。
摘要 DAMODEL(丹摩智算)是专为AI打造的智算云,致力于提供丰富的算力资源与基础设施助力AI应用的开发、训练、部署。 官网链接:https://damodel.com/register?source6B008AA9 平台的优势 💡 超友好! …...
SSH相关
前言 这篇是K8S及Rancher部署的前置知识。因为项目部署测试需要,向公司申请了一个虚拟机做服务器用。此前从未接触过服务器相关的东西,甚至命令也没怎么接触过(接触最多的还是git命令,但我日常用sourceTree)。本篇SSH…...
mysql超大分页问题处理~
大家好,我是程序媛雪儿,今天咱们聊mysql超大分页问题处理。 超大分页问题是什么? 数据量很大的时候,在查询中,越靠后,分页查询效率越低 例如 select * from tb_sku limit 0,10; select * from tb_sku lim…...
Gitlab以及分支管理
一、概述 Git 是一个分布式版本控制系统,用于跟踪文件的变化,尤其是源代码的变化。它由 Linus Torvalds 于 2005 年开发,旨在帮助管理大型软件项目的开发过程。 二、Git 的功能特性 Git 是关注于文件数据整体的变化,直接会将文件…...
探索Axure在数据可视化原型设计中的无限可能
在当今数字化浪潮中,产品设计不仅关乎美观与功能的平衡,更在于如何高效、直观地传达复杂的数据信息。Axure RP,作为原型设计领域的佼佼者,其在数据可视化原型设计中的应用,正逐步揭开产品设计的新篇章。本文将从多个维…...
Redis 内存淘汰策略
Redis 作为一个内存数据库,必须在内存使用达到配置的上限时采取策略来处理新数据的写入需求。Redis 提供了多种内存淘汰策略(Eviction Policies),以决定在内存达到上限时应该移除哪些数据。...
逆天!吴恩达+OpenAI合作出了大模型课程!重磅推出《LLM CookBook》中文版
吴恩达老师与OpenAI合作推出的大模型系列教程,从开发者在大型模型时代的必备技能出发,深入浅出地介绍了如何基于大模型API和LangChain架构快速开发出结合大模型强大能力的应用。 这些教程非常适合开发者学习,以便开始基于LLM实际构建应用程序…...
uint16_t、uint32_t类型数据高低字节互换
1. 使用位运算和逻辑运算符实现 #include<stdio.h> #include<stdint.h> int main() {void test_3() {uint16_t version = 0x1234;printf("%#x\n",(uint8_t)version);printf("%#x\n", version>>8);/*** 在C语言中,uint16和uint8是无符号…...
Java实现数据库图片上传(包含从数据库拿图片传递前端渲染)-图文详解
目录 1、前言: 2、数据库搭建 : 建表语句: 3、后端实现,将图片存储进数据库: 思想: 找到图片位置(如下图操作) 图片转为Fileinputstream流的工具类(可直接copy&#…...
开放式耳机原理是什么?通过不入耳的方式,享受健康听音体验
在开放式耳机的领域又细分了骨传导和气传导两种类型的耳机, 气传导开放式耳机原理 气传导是传统的声音传递方式,它依赖于空气作为声音传播的介质。 声源输入:与普通开放式耳机相同,音频设备通过耳机线将电信号传递到耳机。 驱动…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
