- 论坛徽章:
- 2
|
本帖最后由 linuxforlive 于 2013-07-22 18:12 编辑
- from ctypes import *
- import os
- import sys
- import ftplib
-
- class KANFtp:
- ftp = ftplib.FTP()
- bIsDir = False
- path = ""
- def __init__(self, host):
- self.ftp.connect( host )
-
- def Login(self, user, passwd ):
- self.ftp.login( user, passwd )
- self.ftp.set_pasv(0)
- print self.ftp.welcome
- def DownLoadFile( self, LocalFile, RemoteFile ):
- file_handler = open( LocalFile, 'wb' )
- self.ftp.retrbinary( "RETR %s" %( RemoteFile ), file_handler.write )
- file_handler.close()
- return True
-
- def UpLoadFile( self, LocalFile, RemoteFile ):
- if os.path.isfile( LocalFile ) == False:
- return False
- file_handler = open( LocalFile, "rb" )
- self.ftp.storbinary( 'STOR %s'%RemoteFile, file_handler, )
- file_handler.close()
- return True
-
- def UpLoadFileTree( self, LocalDir, RemoteDir ):
- if os.path.isdir( LocalDir ) == False:
- return False
- LocalNames = os.listdir( LocalDir )
- self.ftp.cwd( RemoteDir )
- for Local in LocalNames:
- src = os.path.join( LocalDir, Local)
- if os.path.isdir( src ):
- self.UpLoadFileTree( src, Local )
- else:
- self.UpLoadFile( src, Local )
-
- self.ftp.cwd( ".." )
- return
-
- def DownLoadFileTree( self, LocalDir, RemoteDir ):
- if os.path.isdir( LocalDir ) == False:
- os.makedirs( LocalDir )
- self.ftp.cwd( RemoteDir )
- RemoteNames = self.ftp.nlst()
- for file in RemoteNames:
- Local = os.path.join( LocalDir, file )
- if self.isDir( file ):
- self.DownLoadFileTree( Local, file )
- else:
- self.DownLoadFile( Local, file )
- self.ftp.cwd( ".." )
- return
-
- def show( self, list ):
- result = list.lower().split( " " )
- if self.path in result and "<dir>" in result:
- self.bIsDir = True
-
- def isDir( 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
-
- ftp = KANFtp('xxxxx')
- ftp.Login('xxxx','xxxxx')
-
- #ftp.DownLoadFile('TEST.TXT', 'public\\hechangmin\\TEST.TXT')#ok
- #ftp.UpLoadFile('TEST.TXT', 'public\\hechangmin\\TEST.TXT')#ok
- ftp.DownLoadFileTree('game999', 'game')#ok
- # ftp.UpLoadFileTree('ts',"Public\\hechangmin\\testFTP" )
- print "ok!"
复制代码 上面这段代码在网上看到的
DownLoadFileTree 这个函数试验一下有些问题 就是加入我的ftp家目录是test 我要下在test下的game目录 但game目录如果含有一个子目录 就会报错 下载不了 如果没有子目录就能下载成功
刚接触python没多久 各位大牛指点指点 |
|