我们正在尝试开发一个Python模块,它将命中FTP服务器并将文件下载到我的本地计算机上。当我们试图运行模块的FTP部分时,它超时了。在
我们有一个代理服务器officeproxy.com:8080)为了处理这个问题,当使用像FileZilla或Windows资源管理器这样的FTP客户端访问FTP站点时,我们成功了。在
我们打电话给ftp站点“ftp.cal.com网站". 用户名是“爸爸”。密码是“tango123”。在
到目前为止,我们已经:
Proxy = officeproxy.com:8080
FTP = ftp.cal.com
User = papa
PW = tango123
以上不是真实的实体,所以如果你想换成真实的实体,就请便。在
我需要一个模块来首先加载代理服务,然后运行FTP部分。在
我运行的是python2.7。在
到目前为止,我已经到处找过了,有了这个代码。OP说这只是一个测试FTP连接和读取一个文件的短模块。在
(注意:我故意在很多地方放#
来显示我不知道该怎么填,或者其他原因):
这个问题有点过时,但我自己没有找到任何最近的解决办法,所以我想我会提供我找到的解决办法。在我的例子中,office代理需要凭据,因此这些凭据包含在解决方案中。如果您的代理不需要凭据,我假设您可以删除proxy_user和proxy_passwd。我在Python 3.6中得到的代码是:
我希望这有帮助。在
加上这一点,因为这是最重要的结果之一,并努力找到一个解决方案。在
如果您的代理是一个HTTP代理,并且您需要对其进行身份验证,则如下所示:
否则,对于FTP代理服务器,Martin的答案是可行的。您也可以在FileZilla中看到FTP代理的行为,这将有助于为您的需求编写代码
希望这对某人有帮助!在
注意,我在SO上找到了一些similarquestions,但是由于OP要求提供详细的初学者级别的答案,我决定发布这个。在
为了澄清,以下是我对您想要实现的目标的理解:
一种选择是使用
ftplib
包。流行语言(如Python)的一大优点是可以选择范围广泛的包,这些包提供了特定功能的良好实现。在这种情况下,ftp客户端:代码的作用如下:
ftplib
包。在"RETR" + filename
是发送到FTP服务器的命令,在本例中是RETR hello.txt
。第二个参数,f.write
是您希望ftp.retrbinary
函数在有来自服务器的数据块时调用的回调函数。在它的实现中,只要retrbinary
有数据,它就会调用f.write(data)
,其中{我希望这对你有用,我希望答案足够详细,让你明白它是如何工作的。如果它不起作用,请为您得到的错误发布堆栈跟踪输出。在
相关问题 更多 >
编程相关推荐