python中ftp模块,python3 ftplib

  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 os

  import 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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: