ftp客戶端交互流程如下:
- 客戶端連接遠程服務(wù)器
- 客戶端輸入用戶名咕幻、密碼
- 客戶端做各種文件傳輸和信息查詢操作
- 客戶端登出遠程futp服務(wù)器
完成以上步驟就實現(xiàn)了一個ftp客戶端,在客戶端實現(xiàn)時需要考慮服務(wù)器是工作做主動模式還是被動模式,服務(wù)器工作在主動模式時服務(wù)器21端口用于傳輸指令依啰,一般數(shù)據(jù)端口使用20结缚。
使用python實現(xiàn)ftp客戶端需要倒入ftplib模塊岸军,并實例化一個ftplib.FTP類對象,所有的FTP操作均使用這個對象完成滞磺。
主要使用代碼如下:
from ftplib import FTP f = FTP(domain.name) f.login('user','password') .. f.quit()
在客戶端開發(fā)時主要使用ftplib.FTP類方法,該類主要包含方法如下:
login()登錄到ftp服務(wù)器莱褒,參數(shù)可選
pwd()得到當前目錄
cwd()把當前目錄設(shè)在成path
dir()列目錄一個可選參數(shù)雁刷,他會被傳給
nlst()與dir類似返回文件名列表而不是現(xiàn)實這些文件名
retrlinces()個頂FTP命令如RETR filename用于下載文本文件,可選回調(diào)函數(shù)cb用處理文件每一行
retrbinary()與retrlines()類似
storbinary(cmd保礼,f[沛励,bs=8192])
storlines(cmd,f)上傳文件,f為一個文件對象
rename(old炮障,new)修改文件名
delete(path)刪除指定目錄
mkd(directory)創(chuàng)建目錄
md(directory)刪除遠程目錄
quit()關(guān)閉連接
具體實現(xiàn)代碼如下:
`
示例代碼:#!/usr/bin/env python
import ftplib
import os
import socket
HOST='004.3vftp.com'
DIRN='./'
FILE ='xcount.py'
def main():
try:
f = ftplib.FTP('004.3vftp.com')
except (socket.error,socket.gaierror), e:
print 'ERROR: cannot reach "%s"' % HOST
return
print """connected to host "%s"""" % HOST
pwd = raw_input('please inpu password:')
user = raw_input('please input user:')
try:
f.login(user,pwd)
except ftplib.error_perm:
print 'error: cannot login anonymously'
return
print '-------logged in as %s secuss----' % user
try:
f.retrbinary('RETR %s' % FILE, open(FILE,'wb').write)
except ftplib.error_perm:
print 'ERROR: cannot read file "%s" % FILE'
os.unlink(FILE)
else:
print 'Downloaded "%s" to cwd' % FILE
f.quit()
return
if name == 'main':
main()
`