1. 程式人生 > >《python核心程式設計》讀書筆記-ftplib.FTP類的方法

《python核心程式設計》讀書筆記-ftplib.FTP類的方法

簡單用法

互動式的一個示例

>>> from ftplib import FTP
>>> f=FTP('127.0.0.1')
>>> f.login(user='anonymous',passwd='')
'230 Login successful.'
>>> f.dir()
drwxr-xr-x    2 0        0              45 Jan 09 08:35 pub
>>> f.dir('pub')
-rw-r--r--    1 0        0               0 Jan 09 08:35 1.txt
-rw-r--r--    1 0        0               0 Jan 09 08:35 2.txt
-rw-r--r--    1 0        0               0 Jan 09 08:35 3.txt
>>> f.quit()
'221 Goodbye.'

ftplib.FTP類方法

方法 描述
dir(argument[, …]) 顯示path目錄裡的內容,可選引數cb是一個回撥函式,會傳遞給retrlines()方法
nlst(argument[, …]) 與dir()類似,返回的檔名列表,而不是顯示這些檔案檔名
rmd(dirname) 刪除伺服器上名為dirname的目錄
retrbinary(cmd, callback, blocksize=8192, rest=None) 與retrlines()類似,只是這個指令處理二進位制檔案,回撥函式cb用於處理每一塊下載的資料
retrlines(cmd, callback=None) 給定FTP命令(如“RETR filename”),用於下載文字檔案,可選的回撥函式cb用於處理檔案的每一行
storbinary(cmd, fp, blocksize=8192, callback=None, rest=None) 與storlines()類似,只是這個指令處理二進位制檔案,要給定一個檔案物件f,上傳塊大小bs預設為8kb
storlines(cmd, fp, callback=None) 給定FTP命令(如“STOR filename”),用來上傳文字檔案,要給定一個檔案物件f
rename(fromname, toname) 將伺服器上的檔案fromname重新命名為toname。
delete(filename) 從伺服器中刪除名為filename的檔案。如果成功,則返回響應的文字,否則會引發error_perm許可權錯誤或 error_reply其他錯誤。
cwd(pathname) 在伺服器上設定當前目錄
mkd(pathname) 在伺服器上建立一個新目錄。
pwd() 返回伺服器上當前目錄的路徑名。
quit() 關閉連線

客戶端FTP示例程式

import ftplib
import os
import socket

HOST='192.168.253.128'  #這是我自己搭建的ftp伺服器
DIRN='pub'    #下載檔案的目錄
FILE='1.txt'   #下載的檔案

def main():
    try:
        f=ftplib.FTP(HOST)
    except (socket.error,socket.gaierror) as e:
        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 "anonymous"')

    try:
        f.cwd(DIRN)
    except ftplib.error_perm:
        print('ERROR:cannot CD to "%s" ' % DIRN)
        f.quit()
        return
    print('*** Change to %s to CWD' % FILE)

    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()

if __name__ == '__main__':
    main()

參考文件 https://docs.python.org/3/library/ftplib.html
參考書籍 《python核心程式設計》