文件傳輸,Python 與 FTP

文件傳輸協(xié)議(FTP)主要用于匿名下載公共文件,也可用于兩臺計算機之間的傳輸文件,特別是在使用 windows 進(jìn)行工作,而文件存儲系統(tǒng)使用 UNIX 的情況下。早在 web 流行前,F(xiàn)TP 就是網(wǎng)上進(jìn)行文件傳輸及下載軟件和源代碼的主要手段之一。
FTP 要求輸入用戶名和密碼才能訪問遠(yuǎn)程 FTP 服務(wù)器,但也允許匿名訪問,不過管理員要先設(shè)置 FTP 服務(wù)器以允許匿名用戶登錄,這時匿名用戶的用戶名是"anonymous",密碼一般是用戶的電子郵件地址。

FTP 的整個工作流程如下:
1.客戶端連接遠(yuǎn)程主機上的 FTP 服務(wù)器
2.客戶端輸入賬號密碼(或“anonymous”和電子郵件地址)
3.客戶端進(jìn)行各種文件傳輸和信息查詢操作
4.客戶端從遠(yuǎn)程 FTP 服務(wù)器退出,結(jié)束傳輸

當(dāng)然這只是一般情況下的傳輸,有時由于網(wǎng)絡(luò)原因,或兩邊計算機崩潰回導(dǎo)致傳輸在完成之前中斷。如果客戶端超過15分鐘(900秒)沒有響應(yīng),F(xiàn)TP 連接就會超時并中斷

在使用 Python 的 FTP 支持時,所需要做的只是導(dǎo)入 ftplib 模塊,并實例化一個 ftplib.FTP類對象。所有 FTP 操作(登錄,傳輸文件,注銷等)都要使用這個對象進(jìn)行操作。

下面是一段 Python 的偽代碼

        from ftplib import FTP
        f = FTP('some.ftp.server')
        f.login('anonymous','your@email.address')
        .
        .
        .
        f.quit()

客戶端 FTP 程序示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import ftplib
import os
import socket

HOST = 'FTP服務(wù)器'
DIRN = '文件路徑'
FILE = '保存的路徑'

def main():
    try:
        f = ftplib.FTP(HOST)           #創(chuàng)建一個 FTP 對象,嘗試連接到 FTP 服務(wù)器
    except (socket.error,socket.gaierror) as e:
        print('error:cannot reach "%s"' % HOST)
        return
    print('...connected to host "%s"' % HOST)

    try:
        f.login()                     #嘗試用“anonymous”登錄
    except ftplib.error_perm as e:
        print('error:cannot login anonymously')
        f.quit()
        return
    print('...logged in as "anonymously"')

    try:
        f.cwd(DIRN)                   #嘗試設(shè)置目錄路徑
    except ftplib.error_perm as e:
        print('error:cannot CD to "%s"' % DIRN)
        f.quit()
        return
    print('...changed to "%s" forder' % DRIN)

    try:
        f.retrbinary('RETR %s' % FILE,open(FILE,'wb').write) #嘗試下載文件,并將文件寫入到 FILE文件
    except ftplib.error_perm as e:
        print('error:cannot read file "%s"' % FILE)
        os.unlink(FILE)
    else:
        print('...downloaded "%s" to CWD' % FILE)
        f.quit()

if __name__ == '__main__':
    main()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • FTP服務(wù)概述 簡單FTP構(gòu)建及訪問 VSFTP服務(wù)基礎(chǔ) 用戶禁錮、黑白名單 FTP并發(fā)及帶寬限制 一、FTP服務(wù)...
    紫_軒閱讀 8,046評論 3 25
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • ftp 文件傳輸協(xié)議 跨平臺 上傳下載文件 vsftpd 工具:非常安全的文件傳輸協(xié)議;默認(rèn)的命令端口21號,數(shù)據(jù)...
    柒夏錦閱讀 4,240評論 1 9
  • 圖片更清晰,文字在最下面 FTP是TCP/IP的一種應(yīng)用,使用TCP而不是UDP,所以是可靠的,面向連接的。 FT...
    停下浮躁的心閱讀 1,823評論 0 4
  • MicrosoftInternetExplorer402DocumentNotSpecified7.8 磅 Nor...
    寧靜消失何如閱讀 1,528評論 2 2

友情鏈接更多精彩內(nèi)容