我正在尝试使用ftplib来获取文件列表,并下载自上次检查以来的任何新文件。到目前为止,我尝试运行的代码是:
#!/usr/bin/env python
from ftplib import FTP
import sys
host = 'ftp.***.com'
user = '***'
passwd = '***'
try:
ftp = FTP(host)
ftp.login(user, passwd)
except:
print 'Error connecting to FTP server'
sys.exit()
try:
ftp.retrlines('LIST')
except:
print 'Error fetching file listing'
ftp.quit()
sys.exit()
ftp.quit() 每当我运行它时,当我试图检索列表时,它就会超时。有什么想法吗?
发布于 2010-08-11 02:27:03
很可能是主动和被动模式之间的冲突。确保以下情况之一为真:
编辑:我查看了文档,发现Python2.1和更高版本的默认模式是被动模式。您正在与哪台服务器交谈,您是否知道它是否支持被动模式?
在主动模式(非PASV)中,客户端发送一个port命令,告诉服务器在该端口上启动数据连接,这要求您的防火墙知道PORT命令,以便它可以将传入的数据连接转发给您--很少有防火墙支持此功能。在被动模式下,客户端打开数据连接,服务器使用它(服务器在打开数据连接时是“被动”的)。
以防你没有使用被动模式,做一个ftp.set_pasv(True),看看这是否有什么不同。
发布于 2012-03-22 15:19:39
如果被动模式由于某种原因而失败,请尝试:
ftp.set_pasv(False)使用活动模式。
https://stackoverflow.com/questions/3451817
复制相似问题