Question

J'ai une situation très délicate (pour mes normes) en main. J'ai un script qui doit lire un nom de variable de script à partir de ConfigParser . Par exemple, je dois lire

self.post.id

à partir d'un fichier .cfg et utilisez-le comme variable dans le script. Comment y parvenir?

Je suppose que ma question n'était pas claire. Le fichier .cfg ressemble à quelque chose comme:

[head]
test: me
some variable : self.post.id

Ce self.post.id doit être remplacé au moment de l'exécution, en prenant des valeurs du script.

Était-ce utile?

La solution

test.ini:

[head]
var: self.post.id

python:

import ConfigParser

class Test:
  def __init__(self):
      self.post = TestPost(5)
  def getPost(self):
      config = ConfigParser.ConfigParser()
      config.read('/path/to/test.ini')
      newvar = config.get('head', 'var')
      print eval(newvar) 

class TestPost:
  def __init__(self, id):
      self.id = id

test = Test()
test.getPost()   # prints 5

Autres conseils

C'est un peu idiot.

Vous avez un langage dynamique, distribué sous forme source.

Vous essayez d’apporter ce qui revient à changer la source. Ce qui est un texte simple en Python facile à lire.

Pourquoi ne pas simplement changer la source Python et arrêter de jouer avec un fichier de configuration?

Il est beaucoup plus facile d'avoir un bloc de code comme celui-ci

# Change this for some reason or another
x = self.post.id # Standard Configuration 
# x = self.post.somethingElse # Another Configuration
# x = self.post.yetAnotherCase # A third configuration

C’est aussi complexe de changer cela que de changer un fichier de configuration. Et votre programme Python est plus simple et plus clair.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top