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

11

我目前的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
你能添加堆栈跟踪吗? - Raskayu
1
@Raskayu 我刚刚添加了。 - Alvin Wee
已回答,请查看。 - Raskayu
1个回答

8

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

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

只需删除ftp.close(),因为ftp.quit()已经包含了调用.close()函数,您正在告诉它要关闭两次,然后退出,因为套接字已经关闭。

FTPlib文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接