2.4.2. 下载网络上某个文件:downloadFile
#------------------------------------------------------------------------------
# download from fileUrl then save to fileToSave
# with exception support
# note: the caller should make sure the fileUrl is a valid internet resource/file
def downloadFile(fileUrl, fileToSave, needReport = False) :
isDownOK = False;
downloadingFile = '';
#---------------------------------------------------------------------------
# note: totalFileSize -> may be -1 on older FTP servers which do not return a file size in response to a retrieval request
def reportHook(copiedBlocks, blockSize, totalFileSize) :
#global downloadingFile
if copiedBlocks == 0 : # 1st call : once on establishment of the network connection
print 'Begin to download %s, total size=%d'%(downloadingFile, totalFileSize);
else : # rest call : once after each block read thereafter
print 'Downloaded bytes: %d' % ( blockSize * copiedBlocks);
return;
#---------------------------------------------------------------------------
try :
if fileUrl :
downloadingFile = fileUrl;
if needReport :
urllib.urlretrieve(fileUrl, fileToSave, reportHook);
else :
urllib.urlretrieve(fileUrl, fileToSave);
isDownOK = True;
else :
print "Input download file url is NULL";
except urllib.ContentTooShortError(msg) :
isDownOK = False;
except :
isDownOK = False;
return isDownOK;
例 2.21. downloadFile的使用范例
if dstPicFile and downloadFile(curUrl, dstPicFile) :
# replace old url with new url