3

我有一个使用 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 个不同的 url。所以我选择了 1 个类别 1 的 url,让脚本做任何与这个 url + 类别相关的事情。

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

4

2 回答 2

2

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

于 2013-10-15T16:18:02.720 回答
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'}
 ...
]

当您加载配置文件时,您可以遍历每个类别/url 对:

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)
于 2013-10-15T16:18:06.167 回答