我在/ etc / sysconfig /中有一个配置文件FOO。这个Linux文件与INI-File非常相似,但是没有部分声明。
为了从这个文件中检索一个值,我曾经写过一个shell脚本,如:
source /etc/sysconfig/FOO
echo $MY_VALUE
现在我想在python中做同样的事情。我尝试使用ConfigParser,但ConfigParser不接受这样的INI-File类似格式,除非它有一个部分声明。
有没有办法从这样的文件中检索值?
答案 0 :(得分:1)
我想你可以使用subprocess
模块完成你正在使用shell脚本所做的事情并阅读它的输出。将shell
选项设置为True
即可使用。
答案 1 :(得分: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读取该文件类对象。