TypeError: expected str, bytes or os.PathLike object, not _io.BufferedReader

181,596

I think it has to do with your second element in storbinary. You are trying to open file, but it is already a pointer to the file you opened in line file = open(local_path,'rb'). So, try to use ftp.storbinary("STOR " + i, file).

Share:
181,596
Matt
Author by

Matt

GIS Tech for Assessor's Office

Updated on February 17, 2020

Comments

  • Matt
    Matt about 4 years

    I'm trying to iterate through a group of files in a folder on my local machine and upload only ones where the file names contain "Service_Areas" to my FTP site using using this code (Python 3.6.1 32 bit, Windows 10 64 bit):

    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()
    

    but I am getting this error:

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

    Any suggestions?