日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python ftplib_python:使用ftplib编写FTP客户端

發布時間:2024/7/5 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python ftplib_python:使用ftplib编写FTP客户端 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python中的ftplib模塊

Python中默認安裝的ftplib模塊定義了FTP類,其中函數有限,可用來實現簡單的ftp客戶端,用于上傳或下載文件

FTP的工作流程及基本操作可參考協議RFC959

ftp登陸連接

from ftplib import FTP #加載ftp模塊

ftp=FTP() #設置變量

ftp.set_debuglevel(2) #打開調試級別2,顯示詳細信息

ftp.connect("IP","port") #連接的ftp sever和端口

ftp.login("user","password")#連接的用戶名,密碼

print ftp.getwelcome() #打印出歡迎信息

ftp.cmd("xxx/xxx") #更改遠程目錄

bufsize=1024 #設置的緩沖區大小

filename="filename.txt" #需要下載的文件

file_handle=open(filename,"wb").write #以寫模式在本地打開文件

ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收服務器上文件并寫入本地文件

ftp.set_debuglevel(0) #關閉調試模式

ftp.quit #退出ftp

ftp相關命令操作

ftp.cwd(pathname) #設置FTP當前操作的路徑

ftp.dir() #顯示目錄下文件信息

ftp.nlst() #獲取目錄下的文件

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.retrbinary("RETR filename.txt",file_handel,bufsize)#下載FTP文件

自己寫的FTP下載客戶端,如果需要上傳客戶端,請修改下就可以了。#!/usr/local/bin/python2.7

#?-*-?coding:?utf-8?-*-

'''

使用ftplib編寫FTP客戶端連接,并指定目錄下載。

'''

__author__?=?'sunday208'

__date__?="2016-02-25?12:50"

import?ftplib?,socket

from?sys?import?exit

import?os

class?DOFTP():

def?__init__(self):

#定義公用變量

self.RED_COLOR='\033[1;31;48m'??#紅?,配置終端輸出的顏色

self.BLUE_COLOR='\033[1;34;48m'??#紅?,配置終端輸出的顏色

self.RES='\033[0m'

def?FTP_DOWN(self,HostIP,SerPort,FtpUser,FtpPasswd,RootDir,Server_files,Local_dir):

MyFTP?=?ftplib.FTP()

try:

MyFTP.connect(host=HostIP,port=SerPort,timeout=5)

print?'%s*****已經成功連接"%s"服務器FTP服務!%s'?%?(self.BLUE_COLOR,HostIP,self.RES)

except?(socket.error,?socket.gaierror),?e:

print?'%s錯誤:無法訪問"%s"?FTP服務,請檢查!錯誤代碼為"%s"%s'?%?(self.RED_COLOR,HostIP,e,self.RES)

exit()

try:

MyFTP.login(user=FtpUser,passwd=FtpPasswd)

print?'%s*****已經成功登陸"%s"服務器FTP服務!%s'?%?(self.BLUE_COLOR,HostIP,self.RES)

print?MyFTP.getwelcome()#顯示ftp服務器歡迎信息

except?(ftplib.error_perm),?e:

print?'%s錯誤:登陸失敗!,請檢查用戶名"%s“密碼"%s"是否正確!錯誤代碼為"%s"%s'?%?(self.RED_COLOR,FtpUser,FtpPasswd,e,self.RES)

exit()

MyFTP.cwd(RootDir)?#進入FTP目錄

FTP_files?=?MyFTP.nlst()???#取FTP當前目錄內容

if?not?Server_files:??#如果要下載為空,將下載該目錄全部內容

DownLists?=?FTP_files

print?"FTP全部目錄%s"%?DownLists

else:

#判斷指定下載的文件是否在FTP目錄中。

DownLists?=?[]???#下載列表

NODownLists?=[]??#沒有下載列表

for?line?in?Server_files:

if?line?in?FTP_files:

DownLists.append(line)

else:

NODownLists.append(line)

if?NODownLists:

print?"%s在FTP服務器并沒有指定文件%s。%s"%?(self.RED_COLOR,",".join(NODownLists),self.RES)

if?DownLists:

print?"%s正在從FTP服務器下載如下文件%s。%s"%?(self.BLUE_COLOR,",".join(DownLists),self.RES)

bufsize?=?1024

for?line?in?DownLists:

FileName?=?open(Local_dir?+?line,'wb').write

MyFTP.retrbinary('RETR?%s'?%?os.path.basename(line),FileName,bufsize)

MyFTP.quit()

print?"%sFTP已經成功退出。%s"%?(self.BLUE_COLOR,self.RES)

if?__name__?==?"__main__":

HostIP='XXXXX'???#FTP服務器IP或者域名

SerPort='21'??????#FTP端口

FtpUser='ftpuser'???#FTP用戶

FtpPasswd='XXXXXX'?#FTP對應用戶密碼

RootDir='/test'???#FTP目錄

Server_files?=?['1.txt','2.txt','3.txt','4.txt']??#下載服務器文件列表

#Server_files?=?[]?#如果要下載為空,將下載該目錄全部內容

Local_dir?="D:/testtmp/downfile/"??#本地目錄

#Local_files?=['a.txt','b.txt']??#上傳服務器本地文件列表

s?=?DOFTP()

if?os.path.exists(Local_dir)==?False:??#判斷本地是否有該文件目錄,如果沒有,將創建

try:

os.mkdir(Local_dir)

print?"%s創建本地目錄'%s'%s"%?(s.BLUE_COLOR,Local_dir,s.RES)

except:

print?"%s無法創建本地目錄'%s',原因是無該盤符或者目錄路徑有問題,程序直接退出!%s"%?(s.RED_COLOR,Local_dir,s.RES)

exit()?#退出程序

s.FTP_DOWN(HostIP,SerPort,FtpUser,FtpPasswd,RootDir,Server_files,Local_dir)

執行結果如下:

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python ftplib_python:使用ftplib编写FTP客户端的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。