2017-02-26 4 views
2
import paramiko 
import os 

paramiko.util.log_to_file('logfile.log') 

host = "100.10.89.23" 
port = 22 
transport = paramiko.Transport((host, port)) 
password = "pass" 
username = "user" 
transport.connect(username = username, password = password) 

sftp = paramiko.SFTPClient.from_transport(transport) 

filepath = '/import/TMP' 
localpath = 'F:\\Projects\\Test' 
sftp.get(filepath, localpath) 

sftp.close() 
transport.close() 

ftp_priv_key ist nicht erforderlich, um eine Verbindung zu sftp herzustellen. Angenommen, ich habe 10 Dateien im angegebenen sftp-Pfad, von denen 6 Dateien im Format csv und anderen oder in einem anderen Format vorliegen. Meine Anforderung ist, nur die csv Formatdateien zu kopieren.So kopieren Sie eine bestimmte Formatdatei von sftp nach local mit Python

Antwort

1

Sie müssen wie etwas tun:

sftp = paramiko.SFTPClient.from_transport(transport) 
for filename in sftp.listdir(filepath): 
    if filename.endswith('.csv'): 
     sftp.get(filename, localpath) 
+0

Änderungen vornehmen, wie Sie vorschlagen, und während der Code ausgeführt wird ich die folgende Fehlermeldung anzeigt: 1. Python36 \ lib \ site-packages \ paramiko \ sftp_client. py "line 721 size = self.getfo (remotePath, fl, Rückruf) 2.Python36 \ lib \ site-packages \ paramiko \ sftp_client.py" -Leitung 695 file_size = self.stat (remotePath) .st_size 3. Python36 \ lib \ site-packages \ paramiko \ sftp_client.py "Zeile 413 t, msg = self._request (CMD_STAT, Pfad) 4.Python36 \ lib \ site-packages \ paramiko \ sftp_client.py "Zeile 730 return self._read_response (num) 5. Python36 \ lib \ site-packages \ paramiko \ sftp_client.py" Zeile 781 self._convert_status (msg) –

+0

6. Python36 \ lib \ site- packages \ paramiko \ sftp_client.py "Zeile 807 raise IOError (errno.ENOENT, Text) –

+0

Stephen Rauch ,, Es ist wirklich dankbar, wenn Sie vorschlagen, was fehlt? –

Verwandte Themen