您的位置 首页 > 数码极客

如何从ftp取文件—ftp远程拉取文件

FTPlib类库常用相关操作

import ftplib ftp = () (2) #打开调试级别2,显示详细信息 (“IP”,”port”) #连接的ftp sever和端口 (“user”,”password”)#连接的用户名,密码 print () #打印出欢迎信息 (“xxx/xxx”) #更改远程目录 bufsize=1024 #设置的缓冲区大小 filename=”” #需要下载的文件 file_handle=open(filename,”wb”).write #以写模式在本地打开文件 (“RETR ”,file_handle,bufsize) #接收服务器上文件并写入本地文件 (0) #关闭调试模式 #退出ftp ftp相关命令操作 (pathname) #设置FTP当前操作的路径 () #显示目录下文件信息 () #获取目录下的文件 (pathname) #新建远程目录 () #返回当前所在位置 (dirname) #删除远程目录 (filename) #删除远程文件 (fromname, toname)#将fromname修改名称为toname。 (“STOR ”,file_handel,bufsize) #上传目标文件 (“RETR ”,file_handel,bufsize)#下载FTP文件

FTP常用操作

下面是ftp操作和使用的相关实例。

#coding:utf-8 import sys,os,ftplib,socket HOST = '192.168.8.102'  #FTP主机 user = "username" password = "pwd" buffer_size = 8192 #缓冲区 #连接登陆 #ftp连接函数 def connect():     try:         ftp = (HOST) #(2) #打开调试级别2,显示详细信息         ()#登录,参数user,password,acct均是可选参数,          #f.login(user="user", passwd="password") #(“xxx/xxx”) #更改远程目录 #bufsize=1024 #设置的缓冲区大小         return ftp     except ):         print("FTP登陆失败,请检查主机号、用户名、密码是否正确")         (0)     print('已连接到: "%s"' % HOST) #中断并退出 def disconnect(ftp):     ()  #FTP.close():单方面的关闭掉连接。FTP.quit():发送QUIT命令给服务器并关闭掉连接 #上传文件 def upload(ftp, filepath):     f = open(filepath, "rb")     file_name = os.(filepath)[-1]     try:         ('STOR %s'%file_name, f, buffer_size)         print('成功上传文件: "%s"' % file_name)     except :         return False     return True #下载文件 def download(ftp, filename):     f = open(filename,"wb").write     try:         ("RETR %s"%filename, f, buffer_size)         print('成功下载文件: "%s"' % filename)     except :         return False     return True #获取目录下文件或文件夹想详细信息 def listinfo(ftp):     ()   #查找是否存在指定文件     def find(ftp,filename):     ftp_f_list = ()  #获取目录下文件、文件夹列表     if filename in ftp_f_list:         return True     else:         return False def main():     ftp = connect()                  #连接登陆ftp     dirpath = 'lp'                   #目录,不能使用lp/lp1这种多级创建,而且要保证你的ftp目录,右键属性不能是只读的     try: (dirpath)                 #新建远程目录     except :         print("目录已经存在或无法创建")     try:(dirpath)             #重定向到指定路径     except :         print('不可以进入目录:"%s"' % dirpath)     print(())                        #返回当前所在位置     try: ("dir1")                  #在当前路径下创建dir1文件夹     except :         print("目录已经存在或无法创建")     upload(ftp,"D:/;)       #上传本地文件     filename=";     (";, filename) #文件改名     if os.(filename):   #判断本地文件是否存在         os.unlink(filename)    #如果存在就删除     download(ftp,filename)        #下载ftp文件     listinfo(ftp)                   #打印目录下每个文件或文件夹的详细信息     files = ()              #获取路径下文件或文件夹列表     print(files)     (filename)              #删除远程文件         ("dir1")                  #删除远程目录     ()  #退出 if __name__ == '__main__':     main()

FTP类文件

下面的代码将ftp常用的功能封装成了一个ftp类

#!/usr/bin/env python # -*- coding: utf-8 -*- import ftplib import os import sys class FTPSync(object):   conn = ()   def __init__(self,host,port=21):         (host,port)       def login(self,username,password):     (username,password)     (False)     print   def test(self,ftp_path):     print ftp_path     print (ftp_path)     #print (ftp_path)     #( 'LIST ./a/b')     #ftp_parent_path = os.(ftp_path)     #ftp_dir_name = os.(ftp_path)     #print ftp_parent_path     #print ftp_dir_name   def _is_ftp_file(self,ftp_path):     try:       if ftp_path in (os.(ftp_path)):         return True       else:         return False     except ,e:       return False   def _ftp_list(self, line):     list = line.split(' ')     if [-1] and list[0].startswith('d'):        = True   def _is_ftp_dir(self,ftp_path):     ftp_path = ('/')     ftp_parent_path = os.(ftp_path)      = os.(ftp_path)      = False     if ftp_path == '.' or ftp_path== './' or ftp_path=='':        = True     else:       #this ues callback function ,that will change _is_dir value       try:         ('LIST %s' %ftp_parent_path,)       except ,e:         return          return   def get_file(self,ftp_path,local_path='.'):     ftp_path = ('/')     if (ftp_path):           file_name = os.(ftp_path)       #如果本地路径是目录,下载文件到该目录       if os.(local_path):         file_handler = open(local_path,file_name), 'wb' )         ("RETR %s" %(ftp_path), )         ()       #如果本地路径不是目录,但上层目录存在,则按照本地路径的文件名作为下载的文件名称       elif os.(os.(local_path)):         file_handler = open(local_path, 'wb' )         ("RETR %s" %(ftp_path), )         ()       #如果本地路径不是目录,且上层目录不存在,则退出       else:         print 'EROOR:The dir:%s is not exist' %os.(local_path)     else:       print 'EROOR:The ftp file:%s is not exist' %ftp_path   def put_file(self,local_path,ftp_path='.'):     ftp_path = ('/')     if os.( local_path ):                  file_handler = open(local_path, "r")       local_file_name = os.(local_path)       #如果远程路径是个目录,则上传文件到这个目录,文件名不变       if (ftp_path):         ('STOR %s'%os.(ftp_path,local_file_name), file_handler)       #如果远程路径的上层是个目录,则上传文件,文件名按照给定命名       elif (os.(ftp_path)):         print 'STOR %s'%ftp_path                 ('STOR %s'%ftp_path, file_handler)       #如果远程路径不是目录,且上一层的目录也不存在,则提示给定远程路径错误       else:                 print 'EROOR:The ftp path:%s is error' %ftp_path       ()     else:       print 'ERROR:The file:%s is not exist' %local_path   def get_dir(self,ftp_path,local_path='.',begin=True):     ftp_path = ('/')     #当ftp目录存在时下载         if (ftp_path):       #如果下载到本地当前目录下,并创建目录       #下载初始化:如果给定的本地路径不存在需要创建,同时将ftp的目录存放在给定的本地目录下。       #ftp目录下文件存放的路径为local_path=local_path+os.(ftp_path)       #例如:将ftp文件夹a下载到本地的a/b目录下,则ftp的a目录下的文件将下载到本地的a/b/a目录下       if begin:         if not os.(local_path):           os.makedirs(local_path)         local_path=os.(local_path,os.(ftp_path))       #如果本地目录不存在,则创建目录       if not os.(local_path):         os.makedirs(local_path)       #进入ftp目录,开始递归查询       (ftp_path)       ftp_files = ()       for file in ftp_files:         local_file = os.(local_path, file)         #如果file ftp路径是目录则递归上传目录(不需要再进行初始化begin的标志修改为False)         #如果file ftp路径是文件则直接上传文件         if (file):           (file,local_file,False)         else:           (file,local_file)       #如果当前ftp目录文件已经遍历完毕返回上一层目录       ( ".." )       return     else:       print 'ERROR:The dir:%s is not exist' %ftp_path       return   def put_dir(self,local_path,ftp_path='.',begin=True):     ftp_path = ('/')     #当本地目录存在时上传     if os.(local_path):             #上传初始化:如果给定的ftp路径不存在需要创建,同时将本地的目录存放在给定的ftp目录下。       #本地目录下文件存放的路径为ftp_path=ftp_path+os.(local_path)       #例如:将本地文件夹a上传到ftp的a/b目录下,则本地a目录下的文件将上传的ftp的a/b/a目录下       if begin:                 if not (ftp_path):           (ftp_path)         ftp_path=os.(ftp_path,os.(local_path))                 #如果ftp路径不是目录,则创建目录       if not (ftp_path):         (ftp_path)       #进入本地目录,开始递归查询       os.chdir(local_path)       local_files = os.listdir('.')       for file in local_files:         #如果file本地路径是目录则递归上传目录(不需要再进行初始化begin的标志修改为False)         #如果file本地路径是文件则直接上传文件         if os.(file):                     ftp_path=os.(ftp_path,file)           (file,ftp_path,False)         else:           (file,ftp_path)       #如果当前本地目录文件已经遍历完毕返回上一层目录       os.chdir( ".." )     else:       print 'ERROR:The dir:%s is not exist' %local_path       return if __name__ == '__main__':   ftp = FTPSync('192.168.1.110')   ('test','test')   #上传文件,不重命名   #('111.txt','a/b')   #上传文件,重命名   #('111.txt','a;)   #下载文件,不重命名   #('/a;,r'D:\\')   #下载文件,重命名   #('/a;,r'D:\112.txt')   #下载到已经存在的文件夹   #('a/b/c',r'D:\\a')   #下载到不存在的文件夹   #('a/b/c',r'D:\\aa')   #上传到已经存在的文件夹   ('b','a')   #上传到不存在的文件夹   ('b','aa/B/')

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何从ftp取文件,ftp远程拉取文件,如何用ftp取文件,ftp,取文件,ftp取文件命令,ftp怎么取文件”边界阅读