前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python读写ini格式的配置文件

python读写ini格式的配置文件

作者头像
生信修炼手册
发布2020-05-16 13:39:17
1.3K0
发布2020-05-16 13:39:17
举报
文章被收录于专栏:生信修炼手册生信修炼手册

生信工程师的日常工作中,除了进行脚本编程,处理文件读写,画图,统计等常规操作,还会涉及到编写一整套完整的pipeline,此时就需要一个标准的配置文件,来保存需要的参数设置。业界常用的标准化的配置文件格式有以下几种

  1. ini
  2. json
  3. xml
  4. yaml

ini作为windows上配置文件的标准格式,更加易于没有编程基础的人来编写和修改,后三种格式则对于程序而言更加友好,处理更加方便。一个ini文件的示例如下

代码语言:javascript
复制
[DEFAULT]threads = 5[SAMPLE]suffix = fastq.gz
[MAPPING]method    = bowtie2threads   = 10filter    = falsemapq      = 20map_ratio = 0.8

每一个中括号和其相关配置称为section, 中括号内的名字则为section的标识符,区分大小写。上述示例中,3大块内容对应3个section。在section下面,以key = value的形式定义了很多的参数,key是不区分大小写的,而且这一行多余的空格也会被忽略掉。

在python3中,通过内置模块configparser来读取ini文件,用法如下

代码语言:javascript
复制
>>> import configparser>>> config = configparser.ConfigParser()>>> config.read('config.ini')['config.ini']

读取成功后,所有的内容存储在config这个对象中,可以用类似字典的操作来访问数据

代码语言:javascript
复制
# sections方法返回所有section的名字>>> config.sections()['SAMPLE', 'TRIM', 'MAPPING']>>> config['SAMPLE']<Section: SAMPLE># 用字典的操作来访问数据>>> config['SAMPLE']['SUFFIX']'fastq.gz'>>> config['SAMPLE']['threads']'5'>>> config['MAPPING']['threads']'10'

DEFAULT这个section有其特殊作用,定义了默认参数以及对应的值,所以上述代码中,在MAPPING这个section中也可以访问到threads的值。

读取的内容无论是什么类型,都用字符串来存储,所以对于数字,逻辑值需要我们自己来转换,写法如下

代码语言:javascript
复制
# 默认字符串>>> config['MAPPING']['threads']'10'#  自己用int函数来转换>>> int(config['MAPPING']['threads'])10# 用模块提供的getint方法来转换>>> config['MAPPING'].getint('threads')10

当然,也可以通过程序来生成ini文件,用法如下

代码语言:javascript
复制
>>> import configparser>>> config = configparser.ConfigParser()>>> config['DEFAULT'] = {'threads':5}>>> config['SAMPLE'] = {'suffix': 'fastq.gz'}>>> config['MAPPING'] = {}>>> config['MAPPING']['method'] = 'bowtie2'>>> config['MAPPING']['threads'] = '10'>>> config['MAPPING']['filter'] = 'false'>>> config['MAPPING']['mapq'] = '20'>>> config['MAPPING']['map_ratio'] = '0.8'>>>>>> with open('config.ini', 'w') as f:...     config.write(f)...>>>

ini定义了配置文件的标准格式,通过configparser模块可以快速便捷的处理ini文件。

·end·

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档