python實現ftp的基本功能

2021-07-04 02:52:38 字數 3736 閱讀 5816

這篇文章主要介紹了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...