来自 ConfigParser 的就地替换

发布于 2024-07-08 15:37:01 字数 399 浏览 7 评论 0原文

我手头有一个非常棘手的情况(按照我的标准)。 我有一个脚本需要从 ConfigParser 读取脚本变量名称。 例如,我需要读取

self.post.id

.cfg 文件并将其用作脚本中的变量。 我该如何实现这一目标?

我想我的询问不清楚。 .cfg 文件看起来像这样:

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

这个 self.post.id 将在运行时被替换,从脚本中获取值。

I have a very tricky situation (for my standards) in hand. I have a script that needs to read a script variable name from ConfigParser. For example, I need to read

self.post.id

from a .cfg file and use it as a variable in the script. How do I achieve this?

I suppose I was unclear in my query. The .cfg file looks something like:

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

This self.post.id is to be replaced at the run time, taking values from the script.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浪漫之都 2024-07-15 15:37:01

测试.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

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
逆光飞翔i 2024-07-15 15:37:01

这有点傻。

您拥有一种以源代码形式分发的动态语言。

您正在尝试对源进行相当于更改的操作。 这是易于阅读的纯文本 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程序会更简单、更清晰。

This is a bit silly.

You have a dynamic language, distributed in source form.

You're trying to make what amounts to a change to the source. Which is easy-to-read, plain text Python.

Why not just change the Python source and stop messing about with a configuration file?

It's a lot easier to have a block of code like this

# 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

it's just as complex to change this as it is to change a configuration file. And your Python program is simpler and more clear.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文