2017-02-26 33 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不需要連接到sftp。 假設我在給定的sftp路徑中有10個文件,其中6個文件格式爲csv,其他或格式不同。我的要求是隻複製csv格式文件。如何從sftp複製特定格式文件到本地使用Python

回答

1

你需要做這樣的事情:

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

進行更改你的建議和運行時我得到了以下錯誤的代碼的方法:1。 Python36 \ LIB \站點包\的paramiko \ sftp_client。 py「line 721 size = self.getfo(remotepath,fl,callback) 2.Python36 \ lib \ site-packages \ paramiko \ sftp_client.py」line 695 file_size = self.stat(remotepath).st_size 3。 Python36 \ lib \ site-packages \ paramiko \ sftp_client.py「行413 t,msg = self._request(CMD_STAT,path) 4.Python36 \ lib \ site-packages \ paramiko \ sftp_client.py「行730 return self._read_response(num) 5. Python36 \ lib \ site-packages \ paramiko \ sftp_client.py」line 781 self._convert_status(msg) –

+0

6. Python36 \ lib \ site- packages \ paramiko \ sftp_client.py「line 807 raise IOError(errno.ENOENT,text) –

+0

Stephen Rauch ,, 如果你建議缺少什麼,它真的很感謝你嗎? –

相關問題