2017-03-26 4 views
1

Ich möchte ein Python-Skript erstellen, mit dem ich Dateien über sftp in einen bestimmten Ordner hochladen kann. Die Verzeichnisse sind immer gleich. Das ist, was ich kam mit:sftp Dateiupload mit Python - Vermeiden von Umbenennen von Dateien

import pysftp 
import os 
import shutil 

cnopts = pysftp.CnOpts(knownhosts='~/.ssh/authorized_keys') 
cnopts.hostkeys = None 


host = "xxx" 
password = "xxx" 
username = "xxx" 

srv = pysftp.Connection(host, username=username, password=password, cnopts=cnopts) 

# src_files = os.listdir("C:/Users/uploads") 
remotepath = "/home/work" 
localpath = "C:/Users/uploads" 
# with srv.cd('/home/work'): # chdir to work 
with srv.cd(): 
    srv.chdir('schedule') 
    srv.put_d(localpath, remotepath) 

print('Upload done') 
srv.close() 

Was ist passiert, dass alle Dateien in den Ordner/home/work/Zeitplan übertragen bekommen aber sie wie diese benannt werden. „Arbeit \ Dateiname“. Aber ich möchte, dass die Dateinamen identisch sind. Ich habe versucht, den Remotepath auszuschließen, indem ich ihn durch '' ersetze, aber die Dateien werden umbenannt in '\. \ Dateiname' Was ist das Problem hier?

Wie Sie sehen können, habe ich versucht, mit os und shutil zu arbeiten, aber das hat nicht funktioniert für mich. So ist es immer noch im Code aber nicht notwendig.

Vielen Dank für Ihre Eingabe

Antwort

0

haben Sie versuchen:

with srv.cd(remotepath): 
    srv.put_d(localpath, 'schedule') 
+0

Dank für Ihre schnelle Antwort. Ich versuchte es. Das Ergebnis ist, dass meine Datei im Ordner "work" auf dem Server mit dem Dateinamen "schedule \. \ Test.txt" abgelegt wird, so dass die Datei noch umbenannt wird. – Burray