#!usr/bin/env python # -*- coding:utf-8 -*- # 作用登录连接FTP,当无法连接时,显示错误代码,ftp.connect()和ftp.login() # 可以了解FTP的环境搭建,了解ftp --help 即可 import ftplib import os import socket from ftplib import FTP import sys reload(sys) sys.setdefaultencoding('utf8') ftp = FTP() ftp.set_debuglevel(2) def connect_ftp(host, port, timeout="10", user, passwd): try: # ftp.set_debuglevel(2) ftp.connect(host=host, port=port) # ftp connect函数的作用 print ("*******已经成功连接'%s'服务器FTP服务!!!").decode("utf-8") % (host) print ftp.welcome except(socket.error, socket.gaierror), e: print ("错误:无法访问'%s'服务器FTP服务!!!%s").decode("utf-8") % (host, e) exit() try: ftp.login(user=user, passwd=passwd) # ftp login函数的作用 except(ftplib.error_perm), e: print u"登录失败,请检查用户名和密码,错误代码%s" % (e) exit() # 显示ftp指定目录下的文件,详细信息 ------- ftp.cat_dir() def cat_dir(filepath): cat = ftp.dir(filepath) return cat # 新建ftp下的目录,ftp目录下不存在此文件 ----- ftp.make_dir() def make_dir(filepath): try: filepath.encode("utf-8") mkd = ftp.mkd(filepath) # ftp.mkd() 创建目录 return mkd except (ftplib.error_perm), e: print u"请查看目录下是否存在同名文件,异常为 %s" % (e) def remove_dir(dirname): try: ftp.rmd(dirname) # ftp.rmd() 删除目录 except (ftplib.error_perm), e: print u"报错了tag:!!!目录已经被删除了 %s" % (e) # 从FTP指定目录上下载文件,并保存到本地指定路径 def downloadfile(localpath, remotepath, filename): bufsize = 1024 # 设置缓冲区大小; # localpath="E:\迅雷下载\dday-collect-debug.apk" ulocalpath = unicode(localpath, "utf-8") try: # path=r"/upload/999.版本发布/debug/Version_debug_20170310_7" ftp.cwd(remotepath) # filename="dday-collect-debug.apk" #需要下载的文件名 filepath=ulocalpath+'/' file_handler = open(filepath+filename, "wb").write # 以写模式打开本地文件,---需下载到本地的路径 ##传一个回调函数给retrbinary() 它在每接收一个二进制数据时都会被调用 ftp.retrbinary("RETR %s" % (filename), file_handler, bufsize) # 接收服务器上文件并写入本地文件 except (ftplib.error_perm), e: print u"请检查路径是否正确,是否有权限读取,错误代码%s" % (e) def upload(localpath): bufsize = 8192 ulocalpath = unicode(localpath, "utf-8") try: file_handler = open(ulocalpath, "rb") filename = os.path.split(ulocalpath)[-1] try: ftp.storbinary("stor %s" % (filename), file_handler, bufsize) except(ftplib.error_perm), e: print u"请检查上传路径是否正确,是否连接FTP,---错误代码%s" % (e) except: print u"请检查本地路径是否存在····" # 获取指定目录下文件 def lst_file(path): #upath = unicode(path, "utf-8") # print os.path.split(ftp.nlst(path)[0])[0].decode("utf-8") s=[] try: for name in ftp.nlst(path): name1 = unicode(name, "utf-8") #print name1 s.append(name1) return s except(ftplib.all_errors),e: print u"请检查目录是否正确,错误代码时-----%s"%(e) def close(): ftp.quit()
##################################
转自:https://blog.csdn.net/qq_30717683/article/details/68923618