Python连接ftp,并对FTP进行操作
#!usr/bin/env python# -*- coding:utf-8 -*-# 作用登录连接FTP,当无法连接时,显示错误代码,ftp.connect()和ftp.login()# 可以了解FTP的环境搭建,了解ftp --help 即可import ftplibimport osimport socketfrom ftplib import FTPimport sys...
·
#!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
更多推荐
已为社区贡献2条内容
所有评论(0)