FTPLIB error socket.gaierror: [Errno 8] nodename nor servname provided, or not known

FTPLIB error socket.gaierror: [Errno 8] nodename nor servname provided, or not known

我正在尝试使用 FTPlib 从 FTP 服务器下载文件,但我一直收到以下错误。我尝试了在 SO 上找到的几种方法,即编辑 etc/host 文件并在本地主机 IP 后添加计算机名称,但这也不起作用。

非常感谢任何帮助。 (运行宁一个 mac, python 3.7, macOS Mojave 10.14.2)

我正在尝试编码 运行:

from ftplib import FTP

ftp = FTP('myftpurl')

错误:

Traceback (most recent call last):

文件“”,第 1 行,位于 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ftplib.py”,第 117 行,在 init 中 self.connect(主持人) 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ftplib.py”,第 152 行,在连接中 source_address=self.source_address) 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socket.py”,第 707 行,在 create_connection 对于 getaddrinfo(host, port, 0, SOCK_STREAM) 中的 res: 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socket.py”,第 748 行,在 getaddrinfo 中 对于 _socket.getaddrinfo 中的资源(主机、端口、系列、类型、原型、标志): socket.gaierror: [Errno 8] 节点名或服务名已提供,或未知

ftp = FTP('myftpurl')

不清楚 myftpurl 在您的特定代码中实际包含什么。
但鉴于它的名字,我假设你已经尝试过类似 ftp://example.com 的东西。只是,因为 clearly documented FTP(...) 不期望 URL 而是主机名或 IP,即 FTP('example.com') 而不是 FTP('ftp://example.com')

给定一个 URL 就像你可能做的那样会导致将 URL 视为主机名,即查找主机名 ftp://example.com。由于这样的主机不存在,您会收到错误消息。