問題描述
我正在嘗試使用 Python 3 的 ftplib 庫從 FTP 服務器下載文件.
I am trying to download a file from FTP server using ftplib library of Python 3.
這里是相關代碼-
ftp = ftplib.FTP("ftp://library.daisy.org:21/User_****/Wise & Otherwise-22.zip")
ftp.login("xxxxx", "xxxxxxx")
ftp.cwd(path)
ftp.retrbinary("RETR " + filename, open(filename, 'wb').write)
ftp.quit()
當我嘗試運行腳本時,會顯示以下錯誤-
When I try to run the script the following error shows up-
Traceback (most recent call last):
File "reader.py", line 604, in <module>
sp.process_user_choice()
File "reader.py", line 72, in process_user_choice
self.download_books() File "reader.py", line 324, in download_books
ftp = ftplib.FTP(all_urls[response])
File "/usr/lib/python3.5/ftplib.py", line 118, in __init__
self.connect(host)
File "/usr/lib/python3.5/ftplib.py", line 153, in connect
source_address=self.source_address)
File "/usr/lib/python3.5/socket.py", line 694, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "/usr/lib/python3.5/socket.py", line 733, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
<小時>
一些筆記-
Some notes-
- 我有正確的 URL 和憑據
- 我在代理服務器后面
推薦答案
FTP
構造函數的 host
參數,顧名思義,只接受一個主機名,例如 <代碼>library.daisy.org.你傳入的是一個完整的 URL.
The host
argument of FTP
constructor takes, as the name suggests, a hostname only, like library.daisy.org
. You are passing in a whole URL.
這是正確的:
ftp = ftplib.FTP("library.daisy.org")
<小時>
完整路徑轉到 RETR
命令的參數:
ftp.retrbinary("RETR User_****/Wise & Otherwise-22.zip", open(filename, 'wb').write)
<小時>
當您通過代理連接時,您也必須滿足這一點.
As you are connecting via proxy, you have to cater for that too.
這里有很多關于這部分的問題.但是您沒有告訴我們您使用的是哪種代理,所以我不能更具體.
There are lot of questions here covering that part. But you didn't tell us what kind of proxy you are using, so I cannot be more specific.
這篇關于Python 3 ftplib 錯誤“名稱或服務未知"的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!