來源:linda1000 發(fā)布時(shí)間:2018-11-03 15:51:40 閱讀量:1032
Python中的ftplib模塊
Python中默認(rèn)安裝的ftplib模塊定義了FTP類,其中函數(shù)有限,可用來實(shí)現(xiàn)簡(jiǎn)單的ftp客戶端,用于上傳或下載文件
FTP的工作流程及基本操作可參考協(xié)議RFC959
ftp登陸連接
from ftplib import FTP #加載ftp模塊
ftp=FTP() #設(shè)置變量
ftp.set_debuglevel(2) #打開調(diào)試級(jí)別2,顯示詳細(xì)信息
ftp.connect("IP","port") #連接的ftp sever和端口
ftp.login("user","password")#連接的用戶名,密碼
print ftp.getwelcome() #打印出歡迎信息
ftp.cmd("xxx/xxx") #更改遠(yuǎn)程目錄
bufsize=1024 #設(shè)置的緩沖區(qū)大小
filename="filename.txt" #需要下載的文件
file_handle=open(filename,"wb").write #以寫模式在本地打開文件
ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收服務(wù)器上文件并寫入本地文件
ftp.set_debuglevel(0) #關(guān)閉調(diào)試模式
ftp.quit #退出ftp
ftp相關(guān)命令操作
ftp.cwd(pathname) #設(shè)置FTP當(dāng)前操作的路徑
ftp.dir() #顯示目錄下文件信息
ftp.nlst() #獲取目錄下的文件
ftp.mkd(pathname) #新建遠(yuǎn)程目錄
ftp.pwd() #返回當(dāng)前所在位置
ftp.rmd(dirname) #刪除遠(yuǎn)程目錄
ftp.delete(filename) #刪除遠(yuǎn)程文件
ftp.rename(fromname, toname)#將fromname修改名稱為toname。
ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上傳目標(biāo)文件
ftp.retrbinary("RETR filename.txt",file_handel,bufsize)#下載FTP文件
網(wǎng)上找到一個(gè)具體的例子:
# 例:FTP編程
from ftplib import FTP
ftp = FTP()
timeout = 30
port = 21
ftp.connect('192.168.1.188',port,timeout) # 連接FTP服務(wù)器
ftp.login('UserName','888888') # 登錄
print ftp.getwelcome() # 獲得歡迎信息
ftp.cwd('file/test') # 設(shè)置FTP路徑
list = ftp.nlst() # 獲得目錄列表
for name in list:
print(name) # 打印文件名字
path = 'd:/data/' + name # 文件保存路徑
f = open(path,'wb') # 打開要保存文件
filename = 'RETR ' + name # 保存FTP文件
ftp.retrbinary(filename,f.write) # 保存FTP上的文件
ftp.delete(name) # 刪除FTP文件
ftp.storbinary('STOR '+filename, open(path, 'rb')) # 上傳FTP文件
ftp.quit() # 退出FTP服務(wù)器
完整的模板:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import ftplib
import os
import socket
HOST = 'ftp.mozilla.org'
DIRN = 'pub/mozilla.org/webtools'
FILE = 'bugzilla-3.6.7.tar.gz'
def main():
try:
f = ftplib.FTP(HOST)
except (socket.error, socket.gaierror):
print 'ERROR:cannot reach " %s"' % HOST
return
print '***Connected to host "%s"' % HOST
try:
f.login()
except ftplib.error_perm:
print 'ERROR: cannot login anonymously'
f.quit()
return
print '*** Logged in as "anonymously"'
try:
f.cwd(DIRN)
except ftplib.error_perm:
print 'ERRORL cannot CD to "%s"' % DIRN
f.quit()
return
print '*** Changed to "%s" folder' % DIRN
try:
#傳一個(gè)回調(diào)函數(shù)給retrbinary() 它在每接收一個(gè)二進(jìn)制數(shù)據(jù)時(shí)都會(huì)被調(diào)用
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()
---------------------
作者:linda1000
來源:CSDN
原文:https://blog.csdn.net/linda1000/article/details/8255771
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
在線
客服
服務(wù)時(shí)間:周一至周日 08:30-18:00
選擇下列產(chǎn)品馬上在線溝通:
客服
熱線
7*24小時(shí)客服服務(wù)熱線
關(guān)注
微信
關(guān)注官方微信