2014-02-13 4 views
16

Kann die Konfiguration für ConfigParser aus einer Zeichenfolge oder Liste gelesen werden?
Ohne jede Art von temporären Datei auf einem DateisystemWie lese ich config aus String oder Liste?

ODER
Gibt es eine ähnliche Lösung für dieses?

Antwort

20

Sie könnten einen Puffer verwenden, die wie eine Datei verhält:

import ConfigParser 
import StringIO 

s_config = """ 
[example] 
is_real: False 
""" 
buf = StringIO.StringIO(s_config) 
config = ConfigParser.ConfigParser() 
config.readfp(buf) 
print config.getboolean('example', 'is_real') 
+0

gut, wo die Puffer zu benutzen? ConfigParser.Read() gibt einen Dateinamen aus. – Lucas

+1

@Lucas, füttern Sie das Datei-ähnliche Objekt 'configparser.readfp()' – iruvar

+1

['cStringIO' Objekte] (http://docs.python.org/2/library/stringio.html#module-cStringIO) sind nicht ['buffer's] (http://docs.python.org/2/library/functions.html#buffer). _Strings_ sind Puffer, aber Puffer können nicht verwendet werden, wenn "Datei" -ähnliche Objekte benötigt werden; 'cStringIO' _wraps_ a' buffer', damit es sich wie eine 'Datei' verhält. Außerdem zeigt Ihr Beispiel nicht, wie sich ein 'cStringIO' wie eine Datei verhält; 'getvalue' ist eine Methode, die für' cStringIO'-Instanzen spezifisch ist, aber Dateien haben sie nicht. – lanzz

14

Die Frage, wie Python-2.7 markiert wurde, aber nur aus Gründen der Vollständigkeit halber: Seit 3.2 Sie die ConfigParser function read_string() so können Sie dies nicht tun brauche die StringIO-Methode nicht mehr.

import configparser 

s_config = """ 
[example] 
is_real: False 
""" 
config = configparser.ConfigParser() 
config.read_string(s_config) 
print(config.getboolean('example', 'is_real')) 
+0

1 Grund mehr, warum ich es hasse, mit Python 2.7 zu arbeiten (danke RHEL 7) –

0

This kann auch nützlich sein. Es zeigt Ihnen, wie Sie Strings mit einer Config (CFG-Datei) lesen. Hier ist ein Grundkonfigurations Leser ich mit den Informationen habe ich aus dem Internet gesammelt haben:

import configparser as cp 
config = cp.ConfigParser() 
config.read('config.cfg') 
opt1=config.getfloat('Section1', 'option1') 
opt2=config.getfloat('Section1', 'option2') 
opt3=config.get('Section1', 'option3') 
print('Config File Float Importer example made using\n\ 
http://stackoverflow.com/questions/18700295/standard-way-of-creating-config-file-suitable-for-python-and-java-together\n\ 
and\n\ 
https://docs.python.org/2/library/configparser.html\n\ 
. (Websites accessed 13/8/2016).') 
print('option1 from Section1 =', opt1, '\n Option 2 from section 1 is', str(opt2), '\nand option 3 from section 1 is "'+opt3+'".') 
input('Press ENTER to exit.') 
Verwandte Themen