python中ftp模块,python3 ftplib
本文介绍了Python网络编程的ftplib模块,通过示例代码对其进行了详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。
Python中默认安装的ftplib模块定义了ftp类,可以用来实现一个简单的FTP客户端,用于上传或下载文件。
ftp登陆连接
从ftplib导入ftp #加载ftp模块
Ftp=FTP() #设置变量
Ftp.set_debuglevel(2) #打开调试级别2并显示详细信息。
Ftp.connect (10.126.64.14 ,21) # ftp服务器和连接端口
Ftp.login (usr _ ESOP , pwd4ftp @ 201903 #) #连接的用户名和密码
Print(ftp.getwelcome()) #打印欢迎消息
FTP . CWD(/zs _ ESOP/55-548410/-/zh/split )#更改远程目录
Bufsize=1024 #设置缓冲区大小
Filename=tslint.json #要下载的文件
File _ handle=open(文件名, WB )。write #以写模式在本地打开文件。
FTP . retr binary( retrts lint . JSON ,file _ handle,bufsize) #接收服务器上的文件,并将其写入本地文件。
Ftp.set_debuglevel(0) #关闭调试模式
退出#退出Ftp
ftp相关命令操作
Ftp.cwd(pathname) #设置当前Ftp操作的路径。cwd可以使用“.”,但不使用相对路径,如。/path 和./path
Ftp.dir() #显示目录中的文件信息。
Ftp.nlst() #获取目录中的文件
Ftp.mkd(路径名)#创建一个新的远程目录
Ftp.pwd() #返回当前位置
Ftp.rmd(dirname) #删除远程目录
Ftp.delete(文件名)#删除远程文件
Ftp.rename(fromname,toname)#) #将fromname修改为toname。你可以选择一个路径来移动文件。
FTP . storbinaly( stor filename . txt ,file _ handel,buffsize) # with
二进制的
模式上传目标文件
FTP . stor lines( stor filename . txt ,file _ handel) #以ASCII模式存储文件
FTP . retr binary( retr filename . txt ,file _ handel,buffsize) # with
二进制
下载FTP文件
FTP . retrlines( retrfilename . txt ,file _ handel) #以ASCII模式获取文件或文件夹的列表
FTP.quit()与FTP.close()的区别
FTP。QUIT():向服务器发送QUIT命令并关闭连接。这是关闭连接的一种温和方式,但是如果服务器向QUIT命令返回一个错误,它将抛出一个异常。FTP.close():单方面关闭连接,在关闭的连接之后不应该使用,例如在FTP.quit()之后。
下载、上传文件
从ftplib导入FTP
def ftpconnect(主机,用户名,密码):
ftp=FTP()
# ftp.set_debuglevel(2) #打开调试级别2并显示详细信息。
Ftp.encoding=GB2312 #解决中文编码问题,默认为latin-1。如果encoding=utf-8 被报错,可以改成GB2312,gbk,ISO-8859-1。
Ftp.connect(主机,21) # connect
Ftp.login(username,password) # login,或者如果匿名登录,则使用空字符串。
返回ftp
def下载文件(ftp,remotepath,localpath):
Bufsize=1024 #设置缓冲块大小
Fp=open(localpath, wb) #以写模式在本地打开文件。
FTP . retr binary( retr remote path,fp.write,bufsize) #接收服务器上的文件并将其写入本地文件。
Ftp.set_debuglevel(0) #关闭调试
Fp.close()关闭文件
定义上传
file(ftp, remotepath, localpath):
bufsize = 1024
fp = open(localpath, rb)
ftp.storbinary(STOR + remotepath, fp, bufsize) # 上传文件
ftp.set_debuglevel(0)
fp.close()# 关闭文件
if __name__ == "__main__":
ftp = ftpconnect("******", "***", "***")
downloadfile(ftp, "***", "***")
uploadfile(ftp, "***", "***")
ftp.quit()
上传、下载文件/目录
注:目录内为文件,若为目录则无法传输
import osimport ftplib
class myFtp:
ftp = ftplib.FTP()
bIsDir = False
path = ""
def __init__(self, host, port=21):
# self.ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
# self.ftp.set_pasv(0) #0主动模式 1 #被动模式
self.ftp.encoding = GB2312 # 解决中文编码问题,默认是latin-1,如果将 encoding=utf-8报错,可以 改为GB2312、gbk、ISO-8859-1
self.ftp.connect(host, port)
def login(self, user, passwd):
self.ftp.login(user, passwd)
print(self.ftp.welcome)
def down_load_file(self, local_file, remote_file):
file_handler = open(local_file, wb)
self.ftp.retrbinary("RETR %s" % remote_file, file_handler.write)
file_handler.close()
return True
def up_load_file(self, local_file, remote_file):
if not os.path.isfile(local_file):
return False
file_handler = open(local_file, "rb")
self.ftp.storbinary(STOR %s % remote_file, file_handler, 4096)
file_handler.close()
return True
def up_load_file_tree(self, local_dir, remote_dir):
if not os.path.isdir(local_dir):
return False
# print("local_dir:", local_dir)
local_names = os.listdir(local_dir)
# print("list:", local_names)
# print(remote_dir)
self.ftp.cwd(remote_dir)
for Local in local_names:
src = os.path.join(local_dir, Local)
if os.path.isdir(src):
self.up_load_file_tree(src, Local)
else:
self.up_load_file(src, Local)
self.ftp.cwd("..")
return
def down_load_file_tree(self, local_dir, remote_dir):
print("remote_dir:", remote_dir)
if not os.path.isdir(local_dir):
os.makedirs(local_dir)
self.ftp.cwd(remote_dir)
remote_names = self.ftp.nlst()
# print("remote_names", remote_names)
# print(self.ftp.nlst(remote_dir))
for file in remote_names:
local = os.path.join(local_dir, file)
if self.is_dir(file):
self.down_load_file_tree(local, file)
else:
self.down_load_file(local, file)
self.ftp.cwd("..")
return
def show(self, list):
result = list.lower().split(" ")
if self.path in result and "
" in result:
self.bIsDir = True
def is_dir(self, path):
self.bIsDir = False
self.path = path
# this ues callback function ,that will change bIsDir value
self.ftp.retrlines(LIST, self.show)
return self.bIsDir
def close(self):
self.ftp.quit()
if __name__ == "__main__":
ftp = myFtp(10.126.64.14,21)
ftp.login("usr_esop", "PWD4ftp@201903#")
ftp.down_load_file_tree(r"C:\PycharmProjects\untitled\backup", "/ZS_ESOP/55-548410/-/zh/Split") # ok
ftp.up_load_file_tree(r"C:\PycharmProjects\untitled\backup", "/ZS_ESOP/55-548410/-/zh/Split") # ok
ftp.close()
print("ok!")
到此这篇关于Python网络编程之ftplib模块的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。