1

我是 Python 的菜鸟

问题:查找和替换文件中的键(字符串)

为此,我使用 Python ConfigParser。但是我想将整个配置(.ini)文件一次读入字典,而不管部分。

  1. 可能吗?
  2. 这样做可以吗?

我不想一次读一个部分

dict(Config.items('Section'))

不想遍历这些部分

for each_section in conf.sections():
    for (each_key, each_val) in conf.items(each_section):
        print each_key
        print each_val

我还有什么其他选择?

-------- 编辑 1 --------

配置文件

[Common]
home_dir: /Users
library_dir: /Library
system_dir: /System
macports_dir: /opt/local

[Frameworks]
Python: 3.2
path: ${Common:system_dir}/Library/Frameworks/

[Arthur]
nickname: Two Sheds
last_name: Jackson
my_dir: ${Common:home_dir}/twosheds
my_pictures: ${my_dir}/Pictures
python_dir: ${Frameworks:path}/Python/Versions/${Frameworks:Python}

下面是包含要替换的键的文件

my dir is home_dir
my lib dir is library_dir
python path is path
My pictures are placed at my_pictures
4

2 回答 2

0

我认为您仅限于阅读不同的部分以获得部分中每个选项的不同值。

dict_sectionValues = {}
for section in Config.sections():
    for option in Config.options(section):
        value = Config.get(section, option)
        dict_sectionValues[option] = value

我认为它的可读性较差,但您可以简化为:

dict_sectionValues = {}
for section in Config.sections():
    for option in Config.options(section):
        dict_sectionValues[option] = Config.get(section, option)
于 2019-04-20T13:27:39.937 回答
0

如果您正在寻找一个字典,它将配置文件中的所有值作为键值对而不考虑其部分,我认为您的方法是正确的

dict={}
for sec in config.sections():
    for item in config.items(sec):
        dict[item[0]]=item[1]
于 2016-04-29T08:29:02.660 回答