2010-05-20 5 views
0

/etc/sysconfig /에 설정 파일 FOO가 있습니다. 이 Linux 파일은 INI-File과 매우 비슷하지만 섹션 선언은 없습니다.Python의 etc/sysconfig에서 값을 가져 오는 방법

source /etc/sysconfig/FOO 
echo $MY_VALUE 

가 지금은 파이썬에서 같은 일을하고 싶지 :

이 파일에서 값을 검색하려면, 내가 좋아하는 쉘 스크립트를 작성하는 데 사용됩니다. ConfigParser를 사용하려했지만 ConfigParser는 섹션 선언이 없으면 INI 파일 비슷한 형식을 허용하지 않습니다.

이러한 파일에서 값을 검색 할 수있는 방법이 있습니까?

답변

1

subprocess 모듈을 사용하여 쉘 스크립트로 수행하는 작업을 정확하게 수행하고 출력을 읽을 수 있다고 가정합니다. shell 옵션을 True으로 설정하여 사용하십시오.

#! /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") 

코드는 [주] 섹션 헤더와 지정된 파일의 내용을 포함하는 메모리 filelike 객체를 생성한다 : 당신이 ConfigParser를 사용하려면

+0

마지막으로 commands.getstatusoutput ("source/etc/sysconfig/FOO; echo $ BAR")을 사용하여 값을 얻습니다. – stanleyxu2005

1

, 당신은 뭔가를 할 수 있습니다. 그런 다음 ConfigParser는 해당 파일 같은 객체를 읽습니다.

+0

ConfigParser에 몇 가지 문제가 있습니다. (1) 모든 키는 소문자로 변환됩니다. (2) 문자열 값 주위의 ""는 제거되지 않습니다. 마지막으로 다른 솔루션을 사용합니다. – stanleyxu2005

+0

ConfigObj 라이브러리를 살펴보십시오. 당신이 언급 한 문제를 다룰 수도 있습니다. http://www.voidspace.org.uk/python/configobj.html – codeape