首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python ftplib问题

Python ftplib问题
EN

Stack Overflow用户
提问于 2013-04-04 20:42:46
回答 1查看 2.6K关注 0票数 1

当我从iPython 0.13运行这段代码时:

代码语言:javascript
复制
import ftplib
f=ftplib.FTP('ftp://ftp.ncbi.nih.gov/genomes/Bacteria/')

我得到以下错误: gaierror: Errno 8节点名或servname未提供,或未知

完整错误如下所示。我在MacOSXv10.7.5 (Lion)上运行python 2.7.1。我做了一些搜索,似乎在其他情况下也会产生类似的错误。奇怪的是我能做到

代码语言:javascript
复制
import urllib2
tt= urllib2.urlopen('ftp://ftp.ncbi.nih.gov/genomes/Bacteria/')

它可以工作,但如果我可以使用FTP功能,我就可以避免解析urlopen,因为我的最终目标是选择目录的一个子集并下载它们的内容。

你知道如何解决或绕过这个错误吗?提前感谢

代码语言:javascript
复制
---------------------------------------------------------------------------
gaierror                                  Traceback (most recent call last)
<ipython-input-2-91f3bda2d528> in <module>()
----> 1 f=ftplib.FTP('ftp://ftp.ncbi.nih.gov/genomes/Bacteria/')

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.pyc in        __init__(self, host, user, passwd, acct, timeout)
115         self.timeout = timeout
116         if host:
--> 117             self.connect(host)
118             if user:
119                 self.login(user, passwd, acct)

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.pyc in connect(self, host, port, timeout)
130         if timeout != -999:
131             self.timeout = timeout
--> 132         self.sock = socket.create_connection((self.host, self.port), self.timeout)
133         self.af = self.sock.family
134         self.file = self.sock.makefile('rb')

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.pyc in create_connection(address, timeout, source_address)
551     host, port = address
552     err = None
--> 553     for res in getaddrinfo(host, port, 0, SOCK_STREAM):
554         af, socktype, proto, canonname, sa = res
555         sock = None

gaierror: [Errno 8] nodename nor servname provided, or not known
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-04 20:51:22

FTP()构造函数的第一个参数必须是主机名,而不是URL:

代码语言:javascript
复制
f=ftplib.FTP('ftp.ncbi.nih.gov')
f.cwd('/genomes/Bacteria/')

(在调用cwd之前,您可能需要登录或在FTP()调用中提供用户名/密码)

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15811535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档