Замена на месте из ConfigParser - PullRequest
0 голосов
/ 17 ноября 2008

У меня очень сложная ситуация (для моих стандартов). У меня есть скрипт, который должен прочитать имя переменной скрипта из ConfigParser . Например, мне нужно прочитать

self.post.id

из файла .cfg и используйте его в качестве переменной в скрипте. Как мне этого добиться?

Полагаю, я был неясен в своем запросе. Файл .cfg выглядит примерно так:

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

Этот self.post.id должен быть заменен во время выполнения, принимая значения из скрипта.

Ответы [ 2 ]

4 голосов
/ 17 ноября 2008

test.ini:

[head]
var: self.post.id

питон:

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
1 голос
/ 17 ноября 2008

Это немного глупо.

У вас есть динамический язык, распространяемый в виде исходного кода.

Вы пытаетесь внести то, что равносильно изменению источника. Что легко читается, простой текст Python.

Почему бы просто не изменить исходный код Python и не перестать возиться с файлом конфигурации?

Намного проще иметь такой блок кода

# 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

изменить это так же сложно, как изменить файл конфигурации. А ваша программа на Python проще и понятнее.

...