Python使用ftplib實現簡易FTP用戶端的方法

來源:互聯網
上載者:User

Python使用ftplib實現簡易FTP用戶端的方法

   本文執行個體講述了Python使用ftplib實現簡易FTP用戶端的方法。分享給大家供大家參考。具體實現方法如下:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#!/usr/bin/python

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

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.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完整執行個體:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

#coding:utf-8

from ctypes import *

import os

import sys

import ftplib

class myFtp:

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 )

def Login(self, user, passwd ):

self.ftp.login( user, passwd )

print self.ftp.welcome

def DownLoadFile( self, LocalFile, RemoteFile ):

file_handler = open( LocalFile, 'wb' )

self.ftp.retrbinary( "RETR %s" %( RemoteFile ), file_handler.write )

file_handler.close()

return True

def UpLoadFile( self, LocalFile, RemoteFile ):

if os.path.isfile( LocalFile ) == False:

return False

file_handler = open( LocalFile, "rb" )

self.ftp.storbinary( 'STOR %s'%RemoteFile, file_handler, 4096 )

file_handler.close()

return True

def UpLoadFileTree( self, LocalDir, RemoteDir ):

if os.path.isdir( LocalDir ) == False:

return False

LocalNames = os.listdir( LocalDir )

print RemoteDir

self.ftp.cwd( RemoteDir )

for Local in LocalNames:

src = os.path.join( LocalDir, Local)

if os.path.isdir( src ):

self.UpLoadFileTree( src, Local )

else:

self.UpLoadFile( src, Local )

self.ftp.cwd( ".." )

return

def DownLoadFileTree( self, LocalDir, RemoteDir ):

if os.path.isdir( LocalDir ) == False:

os.makedirs( LocalDir )

self.ftp.cwd( RemoteDir )

RemoteNames = self.ftp.nlst()

for file in RemoteNames:

Local = os.path.join( LocalDir, file )

if self.isDir( file ):

self.DownLoadFileTree( Local, file )

else:

self.DownLoadFile( Local, file )

self.ftp.cwd( ".." )

return

def show( self, list ):

result = list.lower().split( " " )

if self.path in result and "<dir>" in result:

self.bIsDir = True

def isDir( self, path ):

self.bIsDir = False

self.path = path

#this ues callback function ,that will change bIsDir value

self.ftp.retrlines( 'LIST', self.show )

return self.bIsDir

def close( 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程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.