2013-01-21 4 views
7

Ho script python e script di shell nella stessa cartella che entrambi necessitano di configurazione. Attualmente ho un config.py per i miei script python ma mi stavo chiedendo se è possibile avere un singolo file di configurazione che può essere facilmente letto sia da script python sia da script di shell.Un file di configurazione che può essere letto da python e shell

Qualcuno può dare un esempio del formato di un file di configurazione più adatto per essere letto sia da python che da shell.

+0

Ho usato 'YAML' e lo consiglio. C'è anche 'python-yaml'. –

risposta

6

penso che la soluzione più semplice sarà:

key1="value1" 
key2="value2" 
key3="value3" 

in basta procurarsi questo file env e in Python, è facile da analizzare.

spazi non sono consentiti intorno =

Per Python, vedi questo post: Emulating Bash 'source' in Python

+0

Ha importanza quale sia il formato del file, cioè cfg, ini ecc.? – Jimmy

+0

Per Debian, non importa. –

1

Questo è valido sia in guscio e pitone:

NUMBER=42 
STRING="Hello there" 

cos'altro avete bisogno?

+0

Penso che l'OP desideri un metodo che non rompa le convenzioni. (Ad esempio, non aprire il file come file di testo o avviare un sottoprocesso o chiamare 'eval') – JellicleCat

1

configobj lib può aiutare con questo.

from configobj import ConfigObj 
cfg = ConfigObj('/home/.aws/config') 
access_key_id = cfg['aws_access_key_id'] 
secret_access_key = cfg['aws_secret_access_key'] 
+0

Penso che dovresti aggiungere [] prima ['aws_access_key_id']. qualcosa come cfg [] ['aws_access_key_id'] – Malgi