我正在嘗試讀取一堆xml文件並向他們做些什麼。我想要做的第一件事是根據文件中的數字對它們進行重命名。用BeautifulSoup讀取1000個XML文檔
你可以看到一個數據樣本here警告這將啓動下載一個108MB的zip文件!。這是一個巨大的xml文件,其中包含數千個較小的xml文件。我已經將這些分解成單個文件。我想根據裏面的數字重新命名文件(預處理的一部分)。我有以下代碼:
from __future__ import print_function
from bs4 import BeautifulSoup # To get everything
import os
def rename_xml_files(directory):
xml_files = [xml_file for xml_file in os.listdir(directory) ]
for filename in xml_files:
filename = filename.strip()
full_filename = directory + "/" +filename
print (full_filename)
f = open(full_filename, "r")
xml = f.read()
soup = BeautifulSoup(xml)
del xml
del soup
f.close()
如果我註釋掉「湯=」和「刪除」行,它完美的作品。如果我添加「soup = ...」這一行,它會運行一段時間,然後它最終會崩潰 - 它只會崩潰python內核。我正在使用Enthought Canopy,但是我已經試過它從命令行運行,它也在那裏瘋狂。
我想,也許,它並沒有釋放變量「湯」的空間,所以我嘗試添加「del」命令。同樣的問題。
有關如何規避這個問題的想法?我沒有被困在BS上。如果有更好的方法做到這一點,我會喜歡它,但我需要一些示例代碼。
你能展示一個正在解析的XML文件嗎? –
如果您有權訪問多個核心,您可以從https://mikecvet.wordpress.com/2010/07/02/parallel-mapreduce-in-python/ – boardrider