如何访问 zip 中的 XML
How to access an XML within a zip
我有以下结构:folder/some_files.zip/files.xml
我可以通过以下方式从 XML 中检索我想要的信息。这适用于普通文件夹,但我无法使其适用于 Zip 文件。
tree = ET.parse('filename.xml')
root = tree.getroot()
return root.find('.//Cloud_Coverage_Assessment').text
我怎样才能使它适用于多个 zip?这是我当前的代码:
def RetrieveCloudCover(filename, root):
for zip in folder:
unzipped_file = zipfile.ZipFile(filename, "r")
tree = ET.parse(unzipped_file)
root = tree.getroot()
return root.find('.//Cloud_Coverage_Assessment').text
现在我得到错误:
FileNotFoundError: [Errno 2] 没有那个文件或目录: 'filename'
您在函数中混合了很多不同的东西。 zip 文件不是您可以以“正常”方式查看的文件夹,尽管它在 OS 资源管理器中看起来像这样。
因此您需要将 zip 文件解压缩到一个文件夹中,然后遍历 XML 文件。像这样:
import zipfile
import glob
import os
zip_filename = "lvis_v1_train.json.zip"
unzip_folder = "unzipped_files"
# Open the zip file and extract the XML file to the "unzip_folder"
with zipfile.ZipFile(zip_filename) as zip_file:
zip_file.extractall(unzip_folder)
# Get the list of XML files that were in your zip file
list_xml_files = glob.glob(os.path.join(unzip_folder, "*.json"))
# Iterate through the list of XML paths and open them.
for xml_file in list_xml_files:
tree = ET.parse('filename.xml')
# do what you need with xml files
我有以下结构:folder/some_files.zip/files.xml
我可以通过以下方式从 XML 中检索我想要的信息。这适用于普通文件夹,但我无法使其适用于 Zip 文件。
tree = ET.parse('filename.xml')
root = tree.getroot()
return root.find('.//Cloud_Coverage_Assessment').text
我怎样才能使它适用于多个 zip?这是我当前的代码:
def RetrieveCloudCover(filename, root):
for zip in folder:
unzipped_file = zipfile.ZipFile(filename, "r")
tree = ET.parse(unzipped_file)
root = tree.getroot()
return root.find('.//Cloud_Coverage_Assessment').text
现在我得到错误:
FileNotFoundError: [Errno 2] 没有那个文件或目录: 'filename'
您在函数中混合了很多不同的东西。 zip 文件不是您可以以“正常”方式查看的文件夹,尽管它在 OS 资源管理器中看起来像这样。
因此您需要将 zip 文件解压缩到一个文件夹中,然后遍历 XML 文件。像这样:
import zipfile
import glob
import os
zip_filename = "lvis_v1_train.json.zip"
unzip_folder = "unzipped_files"
# Open the zip file and extract the XML file to the "unzip_folder"
with zipfile.ZipFile(zip_filename) as zip_file:
zip_file.extractall(unzip_folder)
# Get the list of XML files that were in your zip file
list_xml_files = glob.glob(os.path.join(unzip_folder, "*.json"))
# Iterate through the list of XML paths and open them.
for xml_file in list_xml_files:
tree = ET.parse('filename.xml')
# do what you need with xml files