' NoneType'对象没有属性' sendall'蟒蛇

时间:2016-08-10 07:53:07

标签: python python-2.7 ftp

我目前的python脚本:

import os
import ftplib
import hashlib
import glob


hashing = "123"
m = hashlib.md5()
m.update(hashing)
dd = m.hexdigest()

ftp = ftplib.FTP('localhost','kevin403','S$ip1234')
ftp.cwd('/var/www/html/image')

for image in glob.glob(os.path.join('Desktop/images/test*.png')):
  with open(image, 'rb') as file:
    ftp.storbinary('STOR '+dd+ '.png', file)

ftp.close()
ftp.quit()

有人知道这个错误吗?我试图通过ftp将文件发送到另一个文件夹。

运行脚本时遇到的错误:

Traceback (most recent call last):
File "/home/kevin403/wwq.py", line 21, in <module>
  ftp.quit()
File "/usr/lib/python2.7/ftplib.py", line 591, in quit
  resp = self.voidcmd('QUIT')
File "/usr/lib/python2.7/ftplib.py", line 253, in voidcmd
  self.putcmd(cmd)
File "/usr/lib/python2.7/ftplib.py", line 181, in putcmd
  self.putline(line)
File "/usr/lib/python2.7/ftplib.py", line 176, in putline
  self.sock.sendall(line)
AttributeError: 'NoneType' object has no attribute 'sendall'

1 个答案:

答案 0 :(得分:2)

  

<强> FTP.quit()   将QUIT命令发送到服务器并关闭连接。这是关闭连接的“礼貌”方式,但如果服务器响应QUIT命令的错误,则可能引发异常。这意味着调用close()方法,该方法使得FTP实例对后续调用无效(见下文)。

     

<强> FTP.close()   单方面关闭连接。这不应该应用于已经关闭的连接,例如在成功调用quit()之后。在此调用之后,不应再使用FTP实例(在调用close()或quit()之后,您无法通过发出另一个login()方法重新打开连接。)

只需清除ftp.close(),因为ftp.quit()意味着调用.close()函数,您要告诉我关闭两次,然后因为套接字已经关闭而退出。

FTPlib Documentation