只读配置变量ini文件

Readonly configuration variables ini file

我在 python 中有一个程序,它有一个带有程序配置变量的 ini 文件。有些变量是读写的,有些是只读的。

我的配置文件是这样的:

[AuthCtrlr]
enable = True
nbrOfMssgs = 10

我希望变量 enable 为 ReadWrite 并且 nbrOfMssgs 为 ReadOnly。

在我的 python 代码中,我可以更改我的变量:

parser.set('AuthCtrlr', 'enable', False)

使用 configparser 模块。

有没有办法制作一个代码,如果我想更改变量 nbrOfMssgs 它会打印类似“此变量是只读”的内容并且不更改变量的值?

import configparser

class wrappedParser(configparser.ConfigParser):
    def __init__(self):
        super().__init__()
        self.readOnlySettings = []
    def set(self, category, setting, value):
        if setting in self.readOnlySettings:
            raise PermissionError(f"{setting} setting is read-only")
        else:
            return super().set(category, setting, value)
    def makeReadOnly(self, setting):
        self.readOnlySettings.append(setting)



config = wrappedParser()
config['bitbucket.org'] = {}
config.set('bitbucket.org', 'User', 'hg')
config.makeReadOnly('User')
try:
    config.set('bitbucket.org', 'User', 'pg')
except PermissionError as err:
    print(err)
print(config.get('bitbucket.org', 'User'))

创建一个继承自 ConfigParser 的子项 class,如果您尝试更改的设置是 read-only 中的一个,则以引发错误的方式重新实现设置操作。

不过,这不会以任何方式提高代码的安全性。这只是为了防止您意外 更改设置。哪个问问题,为什么会这样?