मैं अपनी पहली पायथन स्क्रिप्ट प्राप्त करने में कामयाब रहा हूं, जो URL से .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" ))