'NoneType' 对象没有属性 'sendall' PYTHON

Alv*_*Wee 5 python ftp python-2.7

我当前的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()
Run Code Online (Sandbox Code Playgroud)

有人知道这个错误吗?我试图通过 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'
Run Code Online (Sandbox Code Playgroud)

Ras*_*ayu 5

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

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

只是擦除ftp.close(),因为ftp.quit() 暗示调用.close()函数你告诉关闭两次,然后退出下降,因为套接字已经关闭。

FTPlib 文档