博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分享一个 ftp下载、解压、更新依赖库文件的 python 脚本
阅读量:6188 次
发布时间:2019-06-21

本文共 2341 字,大约阅读时间需要 7 分钟。

hot3.png

#!/usr/bin/env python# -*- coding: utf8 -*-# ftp下载、解压、更新依赖库文件import os, sys, stat, shutil, string, zipfile, ftplibfrom urlparse import urlparse# list of depended librariesurllist = [	"ftp://1.2.3.4/foo.zip",	"ftp://1.2.3.4/bar.zip"	]def remove_old(lst) :	print "cleaning libraries..."	for url in lst :		try :			dirname = os.path.splitext(os.path.split(urlparse(url).path)[1])[0]			print "cleaning [%s]..." % (dirname)			shutil.rmtree(dirname)			print "[%s] cleaned." % (dirname)		except Exception, e :			continue	print "libraries cleaned."	passdef ftp_download(host, port, username, password, ftpdir, zipname) :	try :		print "downloading file [%s]..." % (zipname)		hftp = ftplib.FTP()		hftp.connect(host, port)		hftp.login(username, password)		hftp.cwd("/")		hftp.cwd(ftpdir)		fp = open(zipname, "wb")		hftp.retrbinary("RETR " + zipname, fp.write)		hftp.close()		fp.close()	except Exception, e :		print "downloading file [%s] failed, err %s." % (zipname, e)		return -1	print "file [%s] downloaded." % (zipname)	return 0	passdef unzip(zipname, path) :	try :		print "unziping file [%s]..." % (zipname)		os.mkdir(path)		zf = zipfile.ZipFile(zipname, "r")		zf.extractall(path)		zf.close()		os.remove(zipname)	except Exception, e :		print "unziping file [%s] failed." % (zipname)		return -1	print "file [%s] unziped." % (zipname)	return 0	passdef get_lib(url) :	print "getting library [%s]..." % url	tp = urlparse(url)	host = tp.netloc	path = tp.path	[ftpdir, zipname] = os.path.split(path)	localdir = os.path.splitext(zipname)[0]	[port, username, password] = [21, "anonymous", "anonymous"]	ret = ftp_download(host, port, username, password, ftpdir, zipname)	if ret != 0 :		print "getting library [%s] failed." % url		return -1	ret = unzip(zipname, localdir)	if ret != 0 :		print "getting library [%s] failed." % url		return -1	print "library [%s] got." % url	return 0	passdef update_libs(lst) :	print "updating libraries..."	for url in lst :		ret = get_lib(url)		if ret != 0 :			print "updating libraries failed."			return	print "libraries updated."	pass# mainif __name__ == "__main__" :	print "depended libraries:"	for url in urllist :		print "\t[%s]" % url	print "========================================"	remove_old(urllist)	update_libs(urllist)	pass

简单起见,没有把依赖库列表和代码分开,自定义依赖库直接改代码中的 url 数组即可。

转载于:https://my.oschina.net/legendlee/blog/465793

你可能感兴趣的文章
Logstash--grok 正则表达式
查看>>
java 强制关闭win7进程
查看>>
8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下...
查看>>
Microsoft Dynamics CRM Developer toolkit for visual studio 安装及下载地址
查看>>
CFDA发布GMP《计算机化系统和确认与验证》两个附录
查看>>
mysql远程备份并解决编码问题脚本
查看>>
ajaxterm 网页上的SSH
查看>>
jQuery.extend 函数使用详解
查看>>
CentOS 6.5 安装 MongoDB
查看>>
DNS+dlz智能解析
查看>>
OSI七层模型每层的协议说明
查看>>
LRU Cache
查看>>
我的友情链接
查看>>
查找***
查看>>
SQL Server 2005无日志文件附加数据库
查看>>
UIViewControllerHierarchyInconsistencyException异常
查看>>
使用 Linux 文件恢复工具
查看>>
JavaScript处理Excel
查看>>
NIO 服务器(一)
查看>>
关于系统集成的设计方案( 二 )
查看>>