我有一個專利文檔,它是一個文本文檔中連接字符串的xml文件。我正在尋找將它分成單獨的文檔,每個單獨的XML文件。我的代碼有效,但我需要加快速度。我的代碼是這樣的:加速讀取xml文件
import time
count = 0
filestr = ''
line = 'x'
start_time = time.time()
with open('C:/Users/RNCZF01/Documents/Cameron-Fen/Economics-Projects/Patent-project/similarity/Patents/ipg121225.xml') as txtfile:
while line:
line = txtfile.readline()
if '<?xml version="1.0" encoding="UTF-8"?>' in line:
filestr = str(count) + '.xml'
count += 1
with open('C:/Users/RNCZF01/Documents/Cameron-Fen/Economics-Projects/Patent-project/similarity/Patents/2012-12-25/' + filestr, 'ab') as textfile:
textfile.write(line)
textfile.write('\n')
print("--- %s seconds ---" % (time.time() - start_time))
我可以想到加速它的一個優化是if語句。它檢查該行是否包含xml頭文件:<?xml version="1.0" encoding="UTF-8"?>
。如果我可以檢查該行是否爲<?xml version="1.0" encoding="UTF-8"?>
,則可能會明顯更快。但是當我寫if line == '<?xml version="1.0" encoding="UTF-8"?>':
它並沒有拿起線。我是否需要在最後包含\n
?有沒有其他的優化可以加速這個過程?謝謝,
卡梅倫
這個文件有多大?你能否將它全部加載到內存中並分割文檔聲明? – Thtu
另外:我很想聽聽你的專利XML文件遵循什麼XML模式。 – kjhughes
所以我現在正在測試它的一小部分文件,但總文件是23GB。我不認爲我可以訪問羣集,但不確定。我可以對它進行多線程處理,這是我會做的,但對其他優化很感興趣。至於XML模式,我不確定,但是這裏是一個示例文件的鏈接:https://drive.google.com/open?id=0B2Kz5NTvWjJud3VGQS16Rks4alU。我從谷歌專利頁面下載了這些文件:https://www.google.com/googlebooks/uspto-patents-grants-text.html – www3