当前位置: 首页 > 面试题库 >

使用ConfigParser读取没有节名的文件

子车心思
2023-03-14
问题内容

我正在ConfigParser阅读脚本的运行时配置。

我想拥有不提供部分名称的灵活性(有些脚本很简单;它们不需要“部分”)。ConfigParser将抛出NoSectionError异常,并且不接受该文件。

如何才能使ConfigParser仅仅检索(key, value)没有节名的配置文件的元组?

例如:

key1=val1
key2:val2

我宁愿不写配置文件。


问题答案:

Alex Martelli提供了一种用于ConfigParser解析.properties文件(显然是无节的配置文件)的解决方案。

例如:

$ cat my.props
first: primo
second: secondo
third: terzo

即将是一种.config格式,除了它缺少开头部分的名称。然后,很容易伪造节标题:

import ConfigParser

class FakeSecHead(object):
    def __init__(self, fp):
        self.fp = fp
        self.sechead = '[asection]\n'

    def readline(self):
        if self.sechead:
            try: 
                return self.sechead
            finally: 
                self.sechead = None
        else: 
            return self.fp.readline()

用法:

cp = ConfigParser.SafeConfigParser()
cp.readfp(FakeSecHead(open('my.props')))
print cp.items('asection')

输出:

[('second', 'secondo'), ('third', 'terzo'), ('first', 'primo')]

他的解决方案是一个类似文件的包装器,该包装器将自动插入一个虚拟节标题来满足ConfigParser的要求。

我认为MestreLion的“ read_string”注释很好,很简单,值得举一个例子。

对于Python 3.2+,您可以实现“虚拟部分”的想法,如下所示:

with open(CONFIG_PATH, 'r') as f:
    config_string = '[dummy_section]\n' + f.read()
config = configparser.ConfigParser()
config.read_string(config_string)


 类似资料:
  • 本文向大家介绍详解Python读取配置文件模块ConfigParser,包括了详解Python读取配置文件模块ConfigParser的使用技巧和注意事项,需要的朋友参考一下 1,ConfigParser模块简介 假设有如下配置文件,需要在Pyhton程序中读取 如何在Python中读取呢 2,ConfigParser模块的基本方法介绍 读取配置文件 写入配置文件 3,特殊情况 如果有以下配置文件

  • 我需要使用Spring batch每两个月处理一次输入文件。文件名带有时间戳,因此每次运行时都会更改。 文件名:NY_Prov_mmddyyyy。csv 我正在使用下面的代码来读取文件,我试图只给出目录名,因为fileName中有一个模式,并且文件名不是固定的。但是,这不起作用。 application.properties: 错误: 原因:java.lang.IllegalStateExcept

  • 我不知道这是如何可能的编程新我想打印值,在abc.txt中存在,但不知道如何做到这一点,使用节点js 预期输出:

  • 我试图的包,但我得到一个。 有什么想法吗?

  • 本文向大家介绍Python使用自带的ConfigParser模块读写ini配置文件,包括了Python使用自带的ConfigParser模块读写ini配置文件的使用技巧和注意事项,需要的朋友参考一下 在用Python做开发的时候经常会用到数据库或者其他需要动态配置的东西,硬编码在里面每次去改会很麻烦。Python自带有读取配置文件的模块ConfigParser,使用起来非常方便。 ini文件 in

  • 我有一个桶,里面有几个小的拼花文件,我想把它们合并成一个更大的文件。 要完成此任务,我想创建一个spark作业来消费并写入一个新文件。 知道怎么了吗?