我目前的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'
答案 0 :(得分:2)
<强> FTP.quit()强> 将QUIT命令发送到服务器并关闭连接。这是关闭连接的“礼貌”方式,但如果服务器响应QUIT命令的错误,则可能引发异常。这意味着调用close()方法,该方法使得FTP实例对后续调用无效(见下文)。
<强> FTP.close()强> 单方面关闭连接。这不应该应用于已经关闭的连接,例如在成功调用quit()之后。在此调用之后,不应再使用FTP实例(在调用close()或quit()之后,您无法通过发出另一个login()方法重新打开连接。)
只需清除ftp.close()
,因为ftp.quit()
意味着调用.close()
函数,您要告诉我关闭两次,然后因为套接字已经关闭而退出。