下载的压缩文件的MetaData

时间:2015-07-27 10:37:40

标签: python

url='http://www.test.com/test.zip'
z = zipfile.ZipFile(BytesIO(urllib.urlopen(url).read()))
z.extractall(path='D:')

我正在编写上面的代码来从网址下载压缩文件,并已下载并从中提取所有文件到指定的驱动器,它工作正常。 有没有办法可以获取从z中提取的所有文件的元数据。 文件名,文件大小和文件扩展等?

2 个答案:

答案 0 :(得分:1)

Zipfile对象实际上有内置的工具,你可以使用它甚至不提取任何东西。 infolist会返回ZipInfo objects的列表,您可以从中读取某些信息,包括完整文件名和未压缩的大小。

import os

url='http://www.test.com/test.zip'
z = zipfile.ZipFile(BytesIO(urllib.urlopen(url).read()))
info = z.infolist()
data = []
for obj in info:
    name = os.path.splitext(obj.filename)
    data.append(name[0], name[1], obj.file_size)

我还使用os.path.splitext将文件的名称与其扩展名分开,因为您确实要求文件类型与名称分开。

答案 1 :(得分:1)

我不知道使用zipfile模块执行此操作的内置方法,但使用os.path可以轻松完成:

import os

EXTRACT_PATH = "D:"

z= zipfile.ZipFile(BytesIO(urllib.urlopen(url).read()))
z.extractall(path=EXTRACT_PATH)
extracted_files = [os.path.join(EXTRACT_PATH, filename) for filename in z.namelist()]
for extracted_file in extracted_files:
    # All metadata operations here, such as:
    print os.path.getsize(extracted_file)