0

我在 /etc/sysconfig/ 中有一个配置文件 FOO。这个 Linux 文件与 INI-File 非常相似,但没有节声明。

为了从这个文件中检索一个值,我曾经编写了一个 shell 脚本,如:

source /etc/sysconfig/FOO
echo $MY_VALUE

现在我想在 python 中做同样的事情。我尝试使用 ConfigParser,但 ConfigParser 不接受这种类似 INI-File 的格式,除非它有节声明。

有没有办法从这样的文件中检索值?

4

2 回答 2

1

subprocess我想你可以使用模块和读取它的输出来完成你对 shell 脚本所做的事情。将其与shell设置为 的选项一起使用True

于 2010-05-20T08:11:10.897 回答
1

如果您想使用ConfigParser,您可以执行以下操作:

#! /usr/bin/env python2.6

from StringIO import StringIO
import ConfigParser

def read_configfile_without_sectiondeclaration(filename):
    buffer = StringIO()
    buffer.write("[main]\n")
    buffer.write(open(filename).read())
    buffer.seek(0)
    config = ConfigParser.ConfigParser()
    config.readfp(buffer)
    return config

if __name__ == "__main__":
    import sys
    config = read_configfile_without_sectiondeclaration(sys.argv[1])
    print config.items("main")

该代码创建了一个内存中的类文件对象,其中包含 [main] 节标题和指定文件的内容。然后 ConfigParser 读取那个类似文件的对象。

于 2010-05-20T08:20:47.733 回答