2017-09-28 2 views
1

Ich bekomme Fehler in Zeile "ftp.retrbinary (" RETR "+ Dateiname, localfile.write)". Es sagt nicht, was genau falsch ist, ich bekomme nur ftplib.error_perm: 500 unbekannten Befehl. Könnte mir Somoen helfen, dieses Problem zu lösen?FTPlib Fehler in rebbinary

from ftplib import FTP 

def grabfile(): 

    if not os.path.exists(dtt): 
     os.makedirs(dtt) 


    ftp = FTP('IP') 
    ftp.login(user="ftpread", passwd = 'PSW') 
    ftp.cwd("/var/log/") 
    filename = "scxmlsoap.log" 
    #localfilename = "scxmlsoap.log" 
    localfile = open(filename, "wb") 
    ftp.retrbinary("RETR" + filename, localfile.write) 
    ftp.quit() 
    localfile.close() 
    f.close() 

def main(): 
    grabfile() 

main() 
+0

heißt es error_perm. Könnte es sich um einen Berechtigungsfehler handeln, was bedeutet, dass Sie nicht die Berechtigung zum Schreiben der Datei haben, die Sie schreiben möchten? – sissy

Antwort

1

Fügen Sie einfach ein Leerzeichen nach RETR hinzu, hier ist eine aktualisierte Version.

ftp = FTP('IP') 
ftp.login(user="ftpread", passwd = 'PSW') 
ftp.cwd("/var/log/") 
filename = "scxmlsoap.log" 
#localfilename = "scxmlsoap.log" 
localfile = open(filename, "wb") 
ftp.retrbinary("RETR %s" % filename, localfile.write) # <-- a space added 
ftp.quit() 
localfile.close() 
f.close() 
+0

vielen dank, das hat geholfen. – Nastyjoe

+0

Sie sind herzlich willkommen;) –

1

Die Tatsache, dass Sie keinen Platz zwischen 'RETR' und die Dateinamen haben bedeutet, dass Sie mit einem einzigen Befehl sind zu senden: 'RETRscxmlsoap.log'. Dies wird natürlich nicht als 'RERT' Befehl interpretiert, den Sie benötigen.

Fügen Sie einfach ein Leerzeichen dazwischen: 'RERT {}'.format(filename).

Verwandte Themen