【问题标题】:Unable to connect to the local FTP Server using python-based library ftplib [duplicate]无法使用基于 python 的库 ftplib 连接到本地 FTP 服务器 [重复]
【发布时间】:2021-02-23 13:03:30
【问题描述】:

我在我的机器上设置了一个本地 FTP 服务器。它设置在 127.0.0.1 和端口 21 上。当我尝试使用基于 python 的库ftplib 访问它时,程序抛出错误。这是我正在运行的代码。

from ftplib import FTP

ftp = FTP("ftp://127.0.0.1", user = "VAIBHAV", passwd = "12345")
ftp.dir()
ftp.retrlines("LIST")
ftp.quit()

而且,这就是错误。

Traceback (most recent call last):
  File ".\main.py", line 5, in <module>
    ftp = FTP("ftp://127.0.0.1", user = "VAIBHAV", passwd = "12345")
  File "C:\Users\VAIBHAV\AppData\Local\Programs\Python\Python38\lib\ftplib.py", line 117, in __init__
    self.connect(host)
  File "C:\Users\VAIBHAV\AppData\Local\Programs\Python\Python38\lib\ftplib.py", line 152, in connect
    self.sock = socket.create_connection((self.host, self.port), self.timeout,
  File "C:\Users\VAIBHAV\AppData\Local\Programs\Python\Python38\lib\socket.py", line 787, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "C:\Users\VAIBHAV\AppData\Local\Programs\Python\Python38\lib\socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

我应该如何解决这个错误?

我使用的是 python 3.8.7,并且我的机器上有 Windows 10。

【问题讨论】:

    标签: python python-3.x ftp


    【解决方案1】:

    查看the documentation,我在主机名前没有看到任何“ftp://”,所以我想如果你把它改成

    ftp = FTP("127.0.0.1", user="VAIBHAV", passwd="12345")
    # or try "localhost" as well
    ftp = FTP("localhost", user="VAIBHAV", passwd="12345")
    

    它应该可以工作,或者至少会给你一个不同的错误。

    【讨论】:

    • 如果您从您无法控制的地方获取这些 url,您可以像这样删除 ftp:// 部分:from urllib.parse import urlparse; urlparse("ftp://127.0.0.1").hostname
    • 知道了。这就像过滤协议名称和其他部分,只检索域名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2016-06-19
    • 2021-12-29
    • 1970-01-01
    • 2023-03-29
    • 2011-05-28
    相关资源
    最近更新 更多