這篇文章主要介紹了python使用ftplib實現簡易ftp客戶端的方法,例項分析了ftplib模組相關設定與使用技巧,需要的朋友可以參考下
#!/usr/bin/python
#-*- coding:utf-8 -*-
fromftplib importftp #載入ftp模組
ftp=ftp() #設定變數
ftp.set_debuglevel(2) #開啟除錯級別2,顯示詳細資訊
ftp.connect("ip","port") #連線的ftp sever和埠
ftp.login("user","password")#連線的使用者名稱,密碼
printftp.getwelcome() #列印出歡迎資訊
ftp.cwd("***/***") #更改遠端目錄
bufsize=1024 #設定的緩衝區大小
file_handle=open(filename,"wb").write
#以寫模式在本地開啟檔案
ftp.retrbinaly("retr filename.txt",file_handle,bufsize)
#接收伺服器上檔案並寫入本地檔案
ftp.set_debuglevel(0) #關閉除錯模式
ftp.quit #退出ftp
ftp.dir() #顯示目錄下檔案資訊
ftp.mkd(pathname) #新建遠端目錄
ftp.pwd() #返回當前所在位置
ftp.rmd(dirname) #刪除遠端目錄
ftp.delete(filename) #刪除遠端檔案
ftp.rename(fromname, toname)#將fromname修改名稱為toname。
ftp.storbinaly("stor filename.txt",file_handel,bufsize)#上傳目標檔案
?
乙個ftp完整例項:
?
#coding:utf-8
fromctypes import*
importos
importsys
importftplib
classmyftp:
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.connect( host, port )
deflogin(self, user, passwd ):
self.ftp.login( user, passwd )
printself.ftp.welcome
defdownloadfile( self, localfile, remotefile ):
file_handler=open( localfile, 'wb')
self.ftp.retrbinary("retr %s" %( remotefile ), file_handler.write )
file_handler.close()
returntrue
defuploadfile( self, localfile, remotefile ):
ifos.path.isfile( localfile ) ==false:
returnfalse
file_handler=open( localfile, "rb")
self.ftp.storbinary('stor %s'%remotefile, file_handler, 4096)
file_handler.close()
returntrue
defuploadfiletree( self, localdir, remotedir ):
ifos.path.isdir( localdir ) ==false:
returnfalse
localnames=os.listdir( localdir )
printremotedir
self.ftp.cwd( remotedir )
forlocal inlocalnames:
src=os.path.join( localdir, local)
ifos.path.isdir( src ):
self.uploadfiletree( src, local )
else:
self.uploadfile( src, local )
self.ftp.cwd("..")
return
defdownloadfiletree( self, localdir, remotedir ):
ifos.path.isdir( localdir ) ==false:
os.makedirs( localdir )
self.ftp.cwd( remotedir )
remotenames=self.ftp.nlst()
forfile in remotenames:
local=os.path.join( localdir, file)
ifself.isdir(file):
self.downloadfiletree( local, file)
else:
self.downloadfile( local, file)
self.ftp.cwd("..")
return
defshow( self,list):
result=list.lower().split(" " )
ifself.pathinresult and"" in result:
self.bisdir=true
defisdir( self, path ):
self.bisdir=false
self.path=path
#this ues callback function ,that will change bisdir value
self.ftp.retrlines('list',self.show )
returnself.bisdir
defclose( self):
self.ftp.quit()
ftp=myftp('********')
ftp.login('*****','*****')
#ftp.downloadfile('test.txt', 'others\\runtime.log')#ok
#ftp.uploadfile('runtime.log', 'others\\runtime.log')#ok
#ftp.downloadfiletree('bcd', 'others\\abc')#ok
#ftp.uploadfiletree('aaa',"others\\" )
ftp.close()
print"ok!"
希望本文所述對大家的python程式設計有所幫助。
C C 程式設計基本功
c c 程式設計基本功 c 其內容精深博大,任何一塊都信手拈來者不多,究其精者更不多,不論何其原因,最重要一點就是其基本功之不紮實,對基礎性東西不加以精深研究。我也是一樣,經過幾輪經典的面試,讓我痛改以前的不紮實的作風,以此來磨礪自己。一 記憶體管理篇 乙個由c c 編譯的程式占用的記憶體分為以下幾...
基本功練習 2 26
型別轉換 先看下面一段程式,這段程式摘自 c專家程式設計 如果是有這樣一段程式的話,你永遠無法知道x的值到底是多少,因為這句賦值語句x array d 1 根本不會執行。原因在哪?經過除錯發現程式執行到if語句進行判斷完之後,直接跳過下面一條語句的執行。下面來分析一下原因,因為sizeof求算型別大...
機器學習基本功
1 回歸模型 重點關注xgboost 注 introduction to statistical learning的2 7章 2 分類模型 統計學習方法 3 神經網路 a 普通的ann b 處理影象的cnn c 處理文字和語音的rnn lstm 4 資料壓縮 視覺化 流行學習 manifold le...