«Объект« NoneType »не имеет атрибута« sendall »» при загрузке файла с помощью Python ftplib - PullRequest
1 голос
/ 04 июля 2019

Я сделал FTP-клиент для передачи файлов на FTP-сервер, но он продолжает показывать мне одни и те же ошибки, независимо от того, как я изменяю функцию storbinary

from ftplib import FTP
import os
from pathlib import Path

ftp = FTP()
ftp.connect('127.0.0.1', 2121)
ftp.login('user', '12345')
ftp.pwd()
ftp.retrlines('LIST')
ftp.quit()

def uploadfile():
    filename = 'C:\\Users\\Raisa Arief\\Desktop\\Software dev\\Ftp client and server\\test.txt'
    localfile = open(filename, 'rb')
    ftp.storbinary('STOR %s' %os.path.basename(filename), localfile, 1024)
    localfile.close()

uploadfile()
ftp.retrlines('LIST')
fetchfile()
ftp.quit()

Это мой журнал ошибок

Traceback (most recent call last):
  File "C:\Users\Raisa Arief\Desktop\Software dev\Ftp client and server\ftp-client.py", line 24, in <module>
    uploadfile()
  File "C:\Users\Raisa Arief\Desktop\Software dev\Ftp client and server\ftp-client.py", line 21, in uploadfile
    ftp.storbinary('STOR %s' %os.path.basename(filename), localfile, 1024)
  File "C:\Users\Raisa Arief\AppData\Local\Programs\Python\Python37\lib\ftplib.py", line 503, in storbinary
    self.voidcmd('TYPE I')
  File "C:\Users\Raisa Arief\AppData\Local\Programs\Python\Python37\lib\ftplib.py", line 277, in voidcmd
    self.putcmd(cmd)
  File "C:\Users\Raisa Arief\AppData\Local\Programs\Python\Python37\lib\ftplib.py", line 199, in putcmd
    self.putline(line)
  File "C:\Users\Raisa Arief\AppData\Local\Programs\Python\Python37\lib\ftplib.py", line 194, in putline
    self.sock.sendall(line.encode(self.encoding))
AttributeError: 'NoneType' object has no attribute 'sendall'

1 Ответ

1 голос
/ 04 июля 2019

Вы фактически делаете это:

ftp.quit()
uploadfile()

Так что я считаю, что совершенно ясно, почему загрузка не удалась.Вы закрываете сеанс перед загрузкой.

...