Python 打开一个zip文件,并在zip文件中传输xml文件
我正在试着打开。ZIP中的xml文件是包含多个xml声明的串联xml文件,非常大。我试图只读取xml中的行,直到下一个xml声明。我找到了相关的问题,没有代码 我要创建的是一个函数,它执行以下操作:Python 打开一个zip文件,并在zip文件中传输xml文件,python,xml,zipfile,Python,Xml,Zipfile,我正在试着打开。ZIP中的xml文件是包含多个xml声明的串联xml文件,非常大。我试图只读取xml中的行,直到下一个xml声明。我找到了相关的问题,没有代码 我要创建的是一个函数,它执行以下操作: 对于每个*.zip文件 提取所有xml文件(或打开xml文件进行读取) 从xml文件中读取行 追加每一行直到下一个xml声明 返回字符串 到目前为止,我已经能够打开zip文件,找到所有xml文件并提取每个xml文件。我不希望将xml文件写入磁盘,而是创建一个字符串,该字符串是一个xml文档,然后进一
def main():
path = 'bulk/'
allFiles = glob.glob(path + '*.zip')
allFiles.sort()
for file in allFiles:
try:
with zipfile.ZipFile(file, mode = 'r', allowZip64 = True) as fin:
print(fin, '- ok')
print(fin.namelist())
for name in fin.namelist():
if name.endswith('xml'):
print(name) # all files that end in 'xml'
fin.extract(name, path='bulk/')
print('extracted ', name)
# TODO function to read lines of the xml file and
except zipfile.BadZipFile:
print(file,'- Bad zip file')
if __name__ == '__main__': main()
使用而不是提取
。它返回给定名称的zip文件的字节数。重要的是要理解,您实际上是在将归档文件提取到内存中,因此要知道实际要提取多少数据,以及您在这方面的限制
例如,以下函数返回一个dict,其中zip存档文件的名称为键,文件的内容为值:
from zipfile import ZipFile
def extract(f):
zf = ZipFile(f)
return {name: zf.read(name) for name in zf.namelist()}