Как получить значение из etc / sysconfig в Python - PullRequest
0 голосов
/ 20 мая 2010

У меня есть файл конфигурации FOO в / etc / sysconfig /. Этот файл Linux очень похож на INI-файл, но без объявления раздела.

Чтобы извлечь значение из этого файла, я писал сценарий оболочки вроде:

source /etc/sysconfig/FOO
echo $MY_VALUE

Теперь я хочу сделать то же самое в python. Я пытался использовать ConfigParser, но ConfigParser не принимает такой формат INI-File, если он не имеет объявления раздела.

Есть ли способ получить значение из такого файла?

Ответы [ 2 ]

1 голос
/ 20 мая 2010

Если вы хотите использовать 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 читает этот файлоподобный объект.

1 голос
/ 20 мая 2010

Полагаю, вы могли бы делать то же, что и со своим сценарием оболочки, используя модуль subprocess и читая его вывод. Используйте его с параметром shell, установленным на True.

...