TypeError: ожидаемый str, байты или ОС.PathLike объект, не io.Командой bufferedreader

Я пытаюсь перебрать группу файлов в папке на моем локальном компьютере и загрузить только те, где имена файлов содержат "Service_Areas" на мой FTP-сайт, используя этот код (Python 3.6.1 32 бит, Windows 10 64 бит):

ftp = FTP('ftp.ftpsite.org')
username = ('username')
password = ('password')
ftp.login(username,password)
ftp.cwd(username.upper())
ftp.cwd('2017_05_02')

for i in os.listdir('C:FTP_testing'):
    if i.startswith("Service_Area"):
        local_path = os.path.join('C:FTP_testing',i)
        file = open(local_path,'rb')
        ftp.storbinary("STOR " + i, open(file, 'rb'))
        file.close()
        continue
    else:
        print('nope')

ftp.quit()

, но я получаю эту ошибку:

Traceback (most recent call last):
  File "C:UsersuserDesktopTest1.py", line 32, in <module>
    ftp.storbinary("STOR " + str(i), open(file, 'rb'))
TypeError: expected str, bytes or os.PathLike object, not _io.BufferedReader

какие предложения?

1 ответов


Я думаю, что это связано с вашей второй элемент storbinary. Вы пытаетесь открыть file, но это уже указатель на файл, который вы открыли в строке file = open(local_path,'rb'). Итак, попробуйте использовать ftp.storbinary("STOR " + i, file).