使用ConfigParser存储和检索元组列表

5 投票
2 回答
10805 浏览
提问于 2025-04-16 04:12

我想把一些配置信息存储在一个配置文件里。这里有一个示例部分:

[URLs]
Google, www.google.com
Hotmail, www.hotmail.com
Yahoo, www.yahoo.com

请问可以用ConfigParser模块把这些内容读入一个元组的列表吗?如果不行,那我该用什么呢?

2 个回答

3
import ConfigParser

config = ConfigParser.ConfigParser()
config.add_section('URLs')
config.set('URLs', 'Google', 'www.google.com')
config.set('URLs', 'Yahoo', 'www.yahoo.com')

with open('example.cfg', 'wb') as configfile:
    config.write(configfile)

config.read('example.cfg')
config.items('URLs')
# [('google', 'www.google.com'), ('yahoo', 'www.yahoo.com')]

文档中提到

在Python 3.0中,ConfigParser模块的名字改成了configparser。使用2to3工具时,它会自动调整你的代码中的导入部分,以便转换到3.0版本。

11

你能把分隔符从逗号(,)改成分号(:)或者等号(=)吗?如果这样做的话,ConfigParser会自动帮你处理这些。

比如,我在把逗号改成等号之后解析了你的示例数据:

# urls.cfg
[URLs]
Google=www.google.com
Hotmail=www.hotmail.com
Yahoo=www.yahoo.com

# Scriptlet
import ConfigParser
filepath = '/home/me/urls.cfg'

config = ConfigParser.ConfigParser()
config.read(filepath)

print config.items('URLs') # Returns a list of tuples.
# [('hotmail', 'www.hotmail.com'), ('google', 'www.google.com'), ('yahoo', 'www.yahoo.com')]

撰写回答