有沒有辦法從最後一行(文件結束)只下載部分文件。就像文件超過40 MB一樣,我想只檢索最後一塊,比如說2042字節。有沒有可能通過ftplib使用python 3來做到這一點?使用ftplib下載部分文件
0
A
回答
3
嘗試使用FTP.retrbinary()
方法並提供rest
參數,它是所需文件的偏移量。由於偏移量是從文件的開頭開始的,因此需要使用文件大小和所需數據字節數來計算偏移量。下面是一個例子使用Debian的FTP服務器:
from ftplib import FTP
hostname = 'ftp.debian.org'
filename = 'README'
num_bytes = 500 # how many bytes to retrieve from end of file
ftp = FTP(hostname)
ftp.login()
ftp.cwd('debian')
cmd = 'RETR {}'.format(filename)
offset = max(ftp.size(filename) - num_bytes, 0)
ftp.retrbinary(cmd, open(filename, 'wb').write, rest=offset)
ftp.quit()
這將檢索請求的文件末尾的最後num_bytes
字節,並將其寫入到當前目錄下的同名文件。
retrbinary()
的第二個參數是回調函數,在這種情況下,它是可寫入文件的write()
方法。您可以編寫自己的回調來處理檢索到的數據。
+0
謝謝,這真的很有幫助 – Nastyjoe
1
只需使用retrbinary
的rest
參數告訴服務器應該開始傳輸數據的文件偏移量。從documentation:
FTP.retrbinary(命令,回調[,maxblocksize [,休息]])
...其餘意味着同樣的事情在transfercmd()方法。FTP.transfercmd(cmd [,rest])
...如果給出可選休息,則將REST命令發送到服務器,將rest作爲參數傳遞。休息通常是一個字節偏移到請求的文件,告訴服務器重新開始發送文件的字節在請求的偏移量,跳過最初的字節。
相關問題
- 1. 下載與FTPLIB
- 2. Python的 - 下載使用Python FTPLIB模塊
- 3. Phpseclib:部分文件下載
- 4. 如何使用多部分下載遠程下載文件?
- 5. 使用php下載部分文件到服務器使用php
- 6. 使用MicrosoftGraph API下載文件附件的部分內容
- 7. 用Python ftplib限制FTP下載
- 8. 文件部分從Webview下載Android
- 9. 寫下載文件的部分區域
- 10. 如何下載部分文件
- 11. r部分名稱下載url文件
- 12. 下載文件(第二部分)
- 13. 防止ftplib下載正在進行中的文件?
- 14. ftplib - Python:腳本掛在下載大文件
- 15. 的Python FTPLIB retrbinary(),文件沒有完全下載
- 16. Python ftplib在下載之前無法獲取文件的大小?
- 17. 需要幫助使用java線程下載文件部分
- 18. 僅使用biopython下載genbank文件的一部分
- 19. 使用FTPClient從FTP服務器下載部分文件
- 20. 使用Ruby下載文件的最後部分?
- 21. 如何使用Java下載文件的一部分?
- 22. 使用FtpLib獲取文件夾大小
- 23. 下載成功,但僅下載部分文件
- 24. FTPLIB上傳和下載卡住
- 25. 爲什麼使用OpenURI將文件下載到部分文件中?
- 26. 如何使用ftplib Python 2.7執行多段FTP下載?
- 27. 使用file_get_contents下載一部分數據?
- 28. 使用libcurl多部分下載
- 29. HTML文件加載部分
- 30. 獲取文件夾和文件使用Python和FTPLIB
不,據我所知,由於我們下載和接收數據包的方式,不可能這樣做。但是,您可以流式傳輸文件,然後只讀最後幾個塊。有關更多詳細信息,請參閱[本答案](https://stackoverflow.com/a/18773444/8381175)。 –