配置文件帮助需要太多的值

时间:2013-10-15 15:56:41

标签: python

我有一个使用settings.cfg的python脚本,如下所示:

[site1]
url=http://boots4tall.com,http://myboots.com,http://boots.com,http://xbox.com,http://xboxOne.com
category=Boots,Boots,Boots,Xbox,Xbox

和python脚本函数:

def main():
    config=ConfigParser.ConfigParser()
    config.readfp(open("settings.cfg"),"r")
    for site in config.sections():
       # ipdb.set_trace()
        settings=dict(config.items(site))
        for (url,category) in zip(settings['url'].split(","),settings['category'].split(",")):

我的主要目标是为特定类别使用特定网址。大多数情况下,1个类别的1-4个不同的网址。所以我选择1个1类网址并让脚本执行与此网址+类别相关的任何操作。

我的问题:我有1200个类别和大约3000个网址。我很难在1行中手动添加这些类别+网址,这真的很难。所以我请求你的帮助,你可以帮助建立一个更好的系统吗?我想过从文本文件中读取行,例如1个文件urls.txt 1个文件categories.txt?代码应该如何寻找这种东西?

2 个答案:

答案 0 :(得分:2)

根据您使用/需要的类别和网址数量,我会使用SQLite数据库来存储类别和URL,并在需要时检索它们。是的,它增加了一些开销和更多代码,但它更容易维护和更新。

答案 1 :(得分:0)

尝试将配置存储为json。在我看来,创建,加载和读取比配置文件容易得多。

您可以像这样创建一个JSON配置文件:

[{'category': 'Boots', 'url': 'http://boots4tall.com'},
 {'category': 'Boots', 'url': 'http://myboots.com'},
 {'category': 'Boots', 'url': 'http://boots.com'},
 {'category': 'Xbox', 'url': 'http://xbox.com'},
 {'category': 'Xbox', 'url': 'http://xboxOne.com'}
 ...
]

当您加载配置文件时,您可以迭代每个类别/网址对:

import json

with open('config.json') as f:
    pairs = json.load(f)

for item in pairs:
    category = item['category']
    url = item['url']
    # process them here...

如果您有Python中的类别和URL列表,那么最初生成这样的配置文件很容易:

import json

pairs = [{'url': url, 'category': category} for (url, category) in zip(urls, categories))]
with open('config.json', 'w') as f:
    json.dump(pairs, f)