2013-10-15 18 views
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-4種不同的網址。所以我選擇1類1 URL並讓腳本執行與此URL +類別相關的任何操作。

我的問題:我有1200個類別和約3000個網址。對於我來說,手動添加這些類別+網址是非常困難的,而不會在一行中出現錯誤,這非常困難。所以我要求你的幫助,你能幫助建立一個更好的系統嗎?我想過從文本文件讀取行,例如1個文件urls.txt 1個文件categories.txt?代碼應該如何尋找這種東西?

回答

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) 
+0

該腳本在crontab中運行,當它運行時,它應該貫穿所有的urls +類別。我認爲爲每個類別和URL JSON配置文件創建將非常困難。我看到的最簡單的方法是在文本文件 – JoJoMe

+0

中新增一行如果您已經有這些類別和URL的Python列表,將它們序列化爲JSON並不難。我會添加一個例子。 – nofinator

+0

我現在沒有列表,它看起來像是一個不錯的選擇,是否有從文本文件轉換爲JSON的轉換器?我可以安排的URL和類別的文本文件也許,然後轉換爲JSON如果可能的 – JoJoMe

2

鑑於您使用/需要多少類別和url,我會使用SQLite數據庫來存儲類別和URL,並在需要時檢索它們。是的,它增加了一些開銷和更多的代碼,但更容易維護和更新。

+0

該腳本在cron中運行標籤,當它運行時,它應該貫穿所有的URL +類別。實施起來會很簡單嗎?我必須手動添加網址+類別 – JoJoMe

+0

是的,只要用戶權限正確,就不會有問題。複雜的部分將編碼SQLite訪問,但由於良好的文檔豐富,這是一個微不足道的過程。 你甚至可以在不停止cron的情況下更新SQLite數據庫(它實際上是一個單獨的文件)並且它也能正常工作。 – erKURITA