2017-05-23 26 views
2

Ich versuche, durch eine Gruppe von Dateien in einem Ordner auf meinem lokalen Rechner zu iterieren und nur diejenigen hochzuladen, wo die Dateinamen "Service_Areas" enthalten meine FTP-Site mit diesem Code verwendet (Python 3.6.1 32 bit, Windows 10 64-Bit):TypeError: erwartet str, Bytes oder os.PathLike Objekt, nicht _io.BufferedReader

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

aber ich bin immer diese Fehlermeldung:

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 

Irgendwelche Vorschläge?

+0

Ich denke, es hat mit Ihrem zweiten Element in 'storbinary' zu tun. Sie versuchen, 'file' zu ​​öffnen, aber' file' ist bereits ein Zeiger auf die Datei, die Sie in der Zeile 'file = open (local_path, 'rb')' 'geöffnet haben. Also, versuchen Sie stattdessen 'ftp.storbinary (" STOR "+ i, Datei)'? – Koanashi

+0

@ Koanashi Sie haben Recht! Wenn Sie das als Antwort hinzufügen wollen, gebe ich Ihnen Kredit. – Matt

Antwort

4

Ich denke, es hat mit Ihrem zweiten Element in storbinary zu tun. Sie versuchen, file zu öffnen, aber es ist bereits ein Zeiger auf die Datei, die Sie in Zeile file = open(local_path,'rb') öffneten. Versuchen Sie also, ftp.storbinary("STOR " + i, file) zu verwenden.

Verwandte Themen