ftplib模塊定義了FTP類和一些方法,用以進行客戶端的ftp編程。可以用python編寫一個自已的ftp客戶端程序,用于下載文件或鏡像站點。如果想了解ftp協議的詳細內容,請參考RFC959。
該模塊是python的通用模塊,所以默認應該已安裝。ftplib模塊使用很簡單,暫時只有一個FTP類和十幾個函數。
下面用一個交互方式演示一下ftplib的主要功能。
>>> from ftplib import FTP >>> ftp = FTP('ftp.cwi.nl') # connect to host, default port >>> ftp.login() # user anonymous, passwd anonymous@ >>> ftp.retrlines('LIST') # list directory contents total 24418 drwxrwsr-x 5 ftp-usr pdmaint 1536 Mar 20 09:48 . dr-xr-srwt 105 ftp-usr pdmaint 1536 Mar 21 14:32 .. -rw-r--r-- 1 ftp-usr pdmaint 5305 Mar 20 09:48 INDEX . . . >>> ftp.retrbinary('RETR README', open('README', 'wb').write) '226 Transfer complete.' >>> ftp.quit()
下面一個下載文件的示例
#!/usr/bin/env python
#author:Jims of http://www.ringkee.com/
#create date: 2005/02/05
#description: Using ftplib module download a file from a ftp server.
from ftplib import FTP
ftp=FTP()
ftp.set_debuglevel(2) #打開調試級別2,顯示詳細信息
ftp.connect('ftp_server','port') #連接
ftp.login('username','password') #登錄,如果匿名登錄則用空串代替即可
print ftp.getwelcome() #顯示ftp服務器歡迎信息
ftp.cwd('xxx/xxx/') #選擇操作目錄
bufsize = 1024 #設置緩沖塊大小
filename='dog.jpg'
file_handler = open(filename,'wb').write #以寫模式在本地打開文件
ftp.retrbinary('RETR dog.jpg',file_handler,bufsize) #接收服務器上文件并寫入本地文件
ftp.set_debuglevel(0) #關閉調試
ftp.quit() #退出ftp服務器
下面一個上傳文件的示例,要成功運行該腳本,需在ftp服務器上有上傳文件的權限。
#!/usr/bin/env python
#author:Jims of http://www.ringkee.com/
#create date: 2005/02/05
#description: Using ftplib module upload a file to a ftp server.
from ftplib import FTP
ftp=FTP()
ftp.set_debuglevel(2)
ftp.connect('ftp_server','port')
ftp.login('username','password')
print ftp.getwelcome()
ftp.cwd('xxx/xxx/')
bufsize = 1024
filename='dog.jpg'
file_handler = open(filename,'rb')
ftp.storbinary('STOR dog.jpg',file_handler,bufsize) #上傳文件
ftp.set_debuglevel(0)
file_handler.close() #關閉文件
ftp.quit()
#!/usr/bin/env python
#author:Jims of http://www.ringkee.com/
#create date: 2005/02/05
#description: Using ftplib module download a file from a ftp server.
from ftplib import FTP
ftp=FTP()
ftp.set_debuglevel(2) #打開調試級別2,顯示詳細信息
ftp.connect('ftp_server','port') #連接
ftp.login('username','password') #登錄,如果匿名登錄則用空串代替即可
print ftp.getwelcome() #顯示ftp服務器歡迎信息
ftp.cwd('xxx/xxx/') #選擇操作目錄
bufsize = 1024 #設置緩沖塊大小
filename='dog.jpg'
file_handler = open(filename,'wb').write #以寫模式在本地打開文件
ftp.retrbinary('RETR dog.jpg',file_handler,bufsize) #接收服務器上文件并寫入本地文件
ftp.set_debuglevel(0) #關閉調試
ftp.quit() #退出ftp服務器
下面一個上傳文件的示例,要成功運行該腳本,需在ftp服務器上有上傳文件的權限。
#!/usr/bin/env python
#author:Jims of http://www.ringkee.com/
#create date: 2005/02/05
#description: Using ftplib module upload a file to a ftp server.
from ftplib import FTP
ftp=FTP()
ftp.set_debuglevel(2)
ftp.connect('ftp_server','port')
ftp.login('username','password')
print ftp.getwelcome()
ftp.cwd('xxx/xxx/')
bufsize = 1024
filename='dog.jpg'
file_handler = open(filename,'rb')
ftp.storbinary('STOR dog.jpg',file_handler,bufsize) #上傳文件
ftp.set_debuglevel(0)
file_handler.close() #關閉文件
ftp.quit()
整理 www.aygfsteel.com/Good-Game