【问题标题】:Error 0 when using ftplib使用 ftplib 时出现错误 0
【发布时间】:2015-10-02 18:52:01
【问题描述】:

我正在尝试使用 python 的 ftplib 下载文件,但我遇到了问题。当我在计算机上运行脚本时出现错误:

Traceback (most recent call last):
  File "ftp_get.py", line 20, in <module>
    ftps.retrbinary('RETR '+ filename, file.write)
  File "C:\Python27\lib\ftplib.py", line 710, in retrbinary
    conn.unwrap()
  File "C:\Python27\lib\ssl.py", line 771, in unwrap
    s = self._sslobj.shutdown()
socket.error: [Errno 0] Error

但是当我在服务器上运行它时,它可以完美运行。今天早上早些时候它也在我的电脑上工作,但现在我得到了错误。 Python代码如下:

from ftplib import FTP_TLS
import os
import glob

user = "something"
passwd = "some_password"
ftps = FTP_TLS('domain')
ftps.login(user, passwd)
ftps.prot_p()       
filenames = ftps.nlst() 

for filename in filenames:
    local_filename = os.path.join('C:\\test2\\', filename)
    file = open(local_filename, 'wb')
    ftps.retrbinary('RETR '+ filename, file.write)
    print "Downloading - " + filename
    #ftps.delete (filename)
    #print "Deleting - " + filename
    file.close()

ftps.quit()

为什么它可以在某些计算机上运行,​​而在其他计算机上不行?

【问题讨论】:

  • 你应该检查是否有其他程序使用相同的端口
  • 如何检查端口 21 上是否有运行或正在使用的任何端口?
  • 你正常使用的操作系统 21 我认为不应该使用
  • 我的 ftp 服务器由 Yahoo 托管。我正在尝试从 Windows 7 计算机和 Windows 2012 R2 服务器运行我的 python 脚本。
  • 我今天早上能够运行脚本,但目前我得到了错误。

标签: python ftplib


【解决方案1】:

访问 Pure-FTPd 服务器似乎有问题。它记录在这里:https://bugs.python.org/issue25437 根据报告,您可以为服务器设置一种兼容模式。在我的情况下,我没有访问服务器的权限,所以注释掉了ftps.prot_p(),这意味着数据是未加密发送的。

【讨论】:

  • 遗憾的是,这似乎已在 Python 3.6 中得到修复,但显然没有针对任何以前的版本,因为 FTP 服务器表现出这种行为的能力被认为是“新功能”。禁用加密不是一种选择。
  • 我正在使用 python 3.8 但面临同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 2018-09-06
  • 1970-01-01
  • 2017-02-27
相关资源
最近更新 更多