今天使用Python实现模块化的功能,突然遇到的问题
具体报错如下:
Exception ignored in: <function BaseMySQLSocket.__del__ at 0x000002C85CBADF70>
Traceback (most recent call last):
File "D:\software installation\AutoOperate\venv\lib\site-packages\mysql\connector\network.py", line 149, in __del__
File "D:\software installation\AutoOperate\venv\lib\site-packages\mysql\connector\network.py", line 137, in shutdown
AttributeError: 'NoneType' object has no attribute 'error'
解决方案:
自己太傻,在使用Python的sftp模块传输时,把transport对象写在了for循环里面
try: for file in fileNames: transport = paramiko.Transport((hostInfo[0], 22)) # transport.connect(username=hostInfo[1], password=self.decrypt(hostInfo[2])) transport.connect(username=hostInfo[1], password=hostInfo[2]) sourcePathFile = sourcePath+file destPathFile = destPath+file sftp = paramiko.SFTPClient.from_transport(transport) sftp.put(sourcePathFile, destPathFile)
然后在for循环外面关闭这个连接
transport.close()
显然这样是有问题,只要把连接的对象写在for循环外面就可以了,因为代码太多外加菜鸟,排查也是费了很大的功夫,这里仅作记录