2

通过 FTP 访问远程服务器时,出现以下错误。不知道是什么问题,所以我可以解决。任何线索都会有所帮助。

代码:

import ftplib
from ftplib import FTP
ftp = ftplib.FTP("server_name")

错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/ftplib.py", line 116, in __init__
    self.connect(host)
  File "/usr/lib64/python2.6/ftplib.py", line 131, in connect
    self.sock = socket.create_connection((self.host, self.port), self.timeout)
  File "/usr/lib64/python2.6/socket.py", line 553, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno -2] Name or service not known
4

2 回答 2

4

(我没有足够的声誉来为@LonelySoul 和其他任何人发表评论。)

如果包含协议,您将遇到Name or service not known异常。"server_name"简单地删除ftp://为我解决了这个问题。

于 2015-12-20T15:08:50.663 回答
0

该错误告诉您它找不到名为server_name. 所以,这就是你需要调试的。

如果您ping server_name在终端/DOS 提示符下,它是否有效,或者给您一个类似的错误cannot resolve server_name?如果你ftp server_name在终端怎么办?

如果在终端中一切正常,并且您的代码中没有愚蠢的拼写错误,那么下一步就是调试 Python 出错的原因。编写一些尝试getaddrinfo显式调用的代码,看看会发生什么。尝试socket.connect使用普通的 IPv4 套接字,看看它是否有效。(如果是这样,问题可能与 IPv6 有关。)等等。

更有可能的是,它也会在终端中失败。在这种情况下,要么您的服务器名称错误,要么您的网络或系统设置有问题;无论哪种方式,这都不是编程问题,StackOverflow 将无法进一步帮助您。

于 2013-08-05T20:58:19.077 回答