Вопрос

У меня очень сложная ситуация (по моим меркам).У меня есть сценарий, которому нужно прочитать имя переменной сценария из КонфигПарсер.Например, мне нужно прочитать

self.post.id

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

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

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

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

Это было полезно?

Решение

тест.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

Другие советы

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

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

Вы пытаетесь внести изменения в источник. Что легко читается, простой текст 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 проще и понятнее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top