python不解压直接读zip_Python:下载和解压缩.zip文件而不写入磁盘

我已经设法让我的第一个python脚本工作,从URL下载.ZIP文件的列表,然后继续提取ZIP文件,并将它们写入磁盘。

我现在失去了实现下一步。

我的主要目标是下载并解压缩zip文件,并通过TCP流传递内容(CSV数据)。我宁愿不写实际的任何zip或提取的文件到磁盘,如果我可以逃脱它。

这里是我当前的脚本,但工作,但不幸的是必须将文件写入磁盘。

import urllib, urllister

import zipfile

import urllib2

import os

import time

import pickle

# check for extraction directories existence

if not os.path.isdir('downloaded'):

os.makedirs('downloaded')

if not os.path.isdir('extracted'):

os.makedirs('extracted')

# open logfile for downloaded data and save to local variable

if os.path.isfile('downloaded.pickle'):

downloadedLog = pickle.load(open('downloaded.pickle'))

else:

downloadedLog = {'key':'value'}

# remove entries older than 5 days (to maintain speed)

# path of zip files

zipFileURL = "http://www.thewebserver.com/that/contains/a/directory/of/zip/files"

# retrieve list of URLs from the webservers

usock = urllib.urlopen(zipFileURL)

parser = urllister.URLLister()

parser.feed(usock.read())

usock.close()

parser.close()

# only parse urls

for url in parser.urls:

if "PUBLIC_P5MIN" in url:

# download the file

downloadURL = zipFileURL + url

outputFilename = "downloaded/" + url

# check if file already exists on disk

if url in downloadedLog or os.path.isfile(outputFilename):

print "Skipping " + downloadURL

continue

print "Downloading ",downloadURL

response = urllib2.urlopen(downloadURL)

zippedData = response.read()

# save data to disk

print "Saving to ",outputFilename

output = open(outputFilename,'wb')

output.write(zippedData)

output.close()

# extract the data

zfobj = zipfile.ZipFile(outputFilename)

for name in zfobj.namelist():

uncompressed = zfobj.read(name)

# save uncompressed data to disk

outputFilename = "extracted/" + name

print "Saving extracted file to ",outputFilename

output = open(outputFilename,'wb')

output.write(uncompressed)

output.close()

# send data via tcp stream

# file successfully downloaded and extracted store into local log and filesystem log

downloadedLog[url] = time.time();

pickle.dump(downloadedLog, open('downloaded.pickle', "wb" ))

任何帮助过去的下一步将非常感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值