Python FTP
Python FTP
FTP或文件傳輸協(xié)議是一種眾所周知的網(wǎng)絡協(xié)議,用于在網(wǎng)絡中的計算機之間傳輸文件。它是在客戶端服務器體系結(jié)構(gòu)上創(chuàng)建的,可以與用戶身份驗證一起使用。也可以在不進行身份驗證的情況下使用它,但這將降低安全性。FTP連接保持當前的工作目錄和其他標志,并且每次傳輸都需要一個輔助連接,通過該連接可以傳輸數(shù)據(jù)。大多數(shù)常見的Web瀏覽器都可以檢索FTP服務器上托管的文件。
1. FTP類中的方法
在python中,我們使用ftplib模塊,該模塊具有以下必需的方法來列出文件,因為需要使用FTP來傳輸文件。
方法 | 描述 |
pwd() | 當前工作目錄。 |
cwd() | 將當前工作目錄更改為指定路徑。 |
dir([path[,...[,cb]]) | 顯示路徑的目錄列表。傳遞給retrlines()的可選回調(diào)cb。 |
storlines(cmd, f) | 使用給定的FTP cmd上傳文本文件-例如STOR文件名。 |
storbinary(cmd,f[, bs=8192]) | 與storlines()類似,但用于二進制文件。 |
delete(path) | 刪除指定路徑下的遠程文件。 |
mkd(directory) | 創(chuàng)建遠程目錄。 |
exception ftplib.error_temp | 當收到表示臨時錯誤的錯誤代碼(響應代碼在400-499范圍內(nèi))時,引發(fā)異常。 |
exception ftplib.error_perm | 當收到表示永久錯誤的錯誤代碼(響應代碼在500–599范圍內(nèi))時,引發(fā)異常。 |
connect(host[, port[, timeout]]) | 連接到給定的主機和端口。默認端口號是21,由FTP協(xié)議指定。 |
quit() | 關(guān)閉連接并退出。 |
以下是上述某些方法的示例。
2. 列出文件
下面的示例使用匿名登錄ftp服務器并列出當前目錄的內(nèi)容。它處理文件和目錄的名稱,并將它們存儲為列表。然后將它們打印出來。
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : m.aalaour.cn # Date : 2020-08-25 import ftplib ftp = ftplib.FTP("ftp.nluug.nl") ftp.login("anonymous", "ftplib-example-1") data = [] ftp.dir(data.append) ftp.quit() for line in data: print "-", line
執(zhí)行上面示例代碼,得到以下結(jié)果:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : m.aalaour.cn # Date : 2020-08-25 - lrwxrwxrwx 1 0 0 1 Nov 13 2012 ftp -> . - lrwxrwxrwx 1 0 0 3 Nov 13 2012 mirror -> pub - drwxr-xr-x 23 0 0 4096 Nov 27 2017 pub - drwxr-sr-x 88 0 450 4096 May 04 19:30 site - drwxr-xr-x 9 0 0 4096 Jan 23 2014 vol
3. 更改目錄
下面的程序使用ftplib模塊中可用的cwd方法來更改目錄,然后獲取所需的內(nèi)容。
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : m.aalaour.cn # Date : 2020-08-25 import ftplib ftp = ftplib.FTP("ftp.nluug.nl") ftp.login("anonymous", "ftplib-example-1") data = [] ftp.cwd('/pub/') change directory to /pub/ ftp.dir(data.append) ftp.quit() for line in data: print "-", line
執(zhí)行上面示例代碼,得到以下結(jié)果:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : m.aalaour.cn # Date : 2020-08-25 - lrwxrwxrwx 1 504 450 14 Nov 02 2007 FreeBSD -> os/BSD/FreeBSD - lrwxrwxrwx 1 504 450 20 Nov 02 2007 ImageMagick -> graphics/ImageMagick - lrwxrwxrwx 1 504 450 13 Nov 02 2007 NetBSD -> os/BSD/NetBSD - lrwxrwxrwx 1 504 450 14 Nov 02 2007 OpenBSD -> os/BSD/OpenBSD - -rw-rw-r-- 1 504 450 932 Jan 04 2015 README.nluug - -rw-r--r-- 1 504 450 2023 May 03 2005 WhereToFindWhat.txt - drwxr-sr-x 2 0 450 4096 Jan 26 2008 av - drwxrwsr-x 2 0 450 4096 Aug 12 2004 comp
4. 提取文件
如上所示獲取文件列表后,可以使用getfile方法獲取特定文件。此方法將文件的副本從遠程系統(tǒng)移動到啟動ftp連接的本地系統(tǒng)。
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : m.aalaour.cn # Date : 2020-08-25 import ftplib import sys def getFile(ftp, filename): try: ftp.retrbinary("RETR " + filename ,open(filename, 'wb').write) except: print "Error" ftp = ftplib.FTP("ftp.nluug.nl") ftp.login("anonymous", "ftplib-example-1") ftp.cwd('/pub/') change directory to /pub/ getFile(ftp,'README.nluug') ftp.quit()
當運行上述程序時,就會發(fā)現(xiàn)文件README.nlug存在于啟動連接的本地系統(tǒng)中。
相關(guān)文章
- python中f字符串以及其常見用法介紹
- Python異步之迭代器怎么使用
- Python異步之上下文管理器怎么使用
- Python迭代器如何創(chuàng)建使用
- Python網(wǎng)絡爬蟲之如何獲取網(wǎng)絡數(shù)據(jù)
- Python 網(wǎng)絡編程
- Python 路由
- Python HTTP請求
- Python 請求狀態(tài)代碼
- Python Socket程序
- Python HTTP客戶端
- Python 構(gòu)建URL
- Python Web表單提交
- Python 數(shù)據(jù)庫和SQL
- Python Telnet
- Python SSH
- Python Web服務器
- Python 線程并發(fā)
- Python 調(diào)試線程應用程序
- Python 進程池