2016-12-01 82 views
0

我正在解析幾千個以dict形式出現的html文件。然後,我想將它們合併爲一個字典並以json格式保存到磁盤。如何隨時附加到json文件?

我不想在遍歷文件時在內存中構建這個巨大的字典,我寧願隨時更新/寫入文件。

因此,不是這樣的:

data = {} 
for e, fn in enumerate(os.listdir(path)): 
    fp = os.path.join(path, fn) 
    d = html_to_dict(fp) 
    data[e] = d 

我想這樣的:

with open('out_file.json', 'w') as f: 
    for e, fn in enumerate(os.listdir(path)): 
     fp = os.path.join(path, fn) 
     d = html_to_dict(fp) 
     # update the file dict 

任何想法?

回答

2

您應該可以通過自己編寫一些JSON並使用json庫來完成單個記錄。例如:

with open('out_file.json', 'w') as f: 
    f.write("{") 
    delim = "" 
    for e, fn in enumerate(os.listdir(path)): 
     fp = os.path.join(path, fn) 
     d = html_to_dict(fp) 
     f.write(delim + str(e) + ":") 
     json.dump(d, f) 
     delim = ",\n" 
    f.write("}") 

在這種情況下可以編寫的陣列,而不是一個對象,並保存用於鍵所需的空間:

with open('out_file.json', 'w') as f: 
    f.write("[") 
    delim = "" 
    for fn in os.listdir(path): 
     fp = os.path.join(path, fn) 
     d = html_to_dict(fp) 
     f.write(delim) 
     json.dump(d, f) 
     delim = ",\n" 
    f.write("]")