Python使用sftp实现上传和下载功能
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python使⽤sftp实现上传和下载功能
在Python中可以使⽤paramiko模块中的sftp登陆远程主机,实现上传和下载功能。
1.功能实现
1、根据输⼊参数判断是⽂件还是⽬录,进⾏上传和下载
2、本地参数local需要与远程参数remote类型⼀致,⽂件以⽂件名结尾,⽬录以\结尾
3、上传和下载的本地和远程⽬录需要存在
4、异常捕获
2.代码实现
#!/usr/bin/python
# coding=utf-8
import paramiko
import os
def sftp_upload(host,port,username,password,local,remote):
sf = paramiko.Transport((host,port))
sf.connect(username = username,password = password)
sftp = paramiko.SFTPClient.from_transport(sf)
try:
if os.path.isdir(local):#判断本地参数是⽬录还是⽂件
for f in os.listdir(local):#遍历本地⽬录
sftp.put(os.path.join(local+f),os.path.join(remote+f))#上传⽬录中的⽂件
else:
sftp.put(local,remote)#上传⽂件
except Exception,e:
print('upload exception:',e)
sf.close()
def sftp_download(host,port,username,password,local,remote):
sf = paramiko.Transport((host,port))
sf.connect(username = username,password = password)
sftp = paramiko.SFTPClient.from_transport(sf)
try:
if os.path.isdir(local):#判断本地参数是⽬录还是⽂件
for f in sftp.listdir(remote):#遍历远程⽬录
sftp.get(os.path.join(remote+f),os.path.join(local+f))#下载⽬录中⽂件
else:
sftp.get(remote,local)#下载⽂件
except Exception,e:
print('download exception:',e)
sf.close()
if __name__ == '__main__':
host = '192.168.1.2'#主机
port = 22 #端⼝
username = 'root' #⽤户名
password = '123456' #密码
local = 'F:\\sftptest\\'#本地⽂件或⽬录,与远程⼀致,当前为windows⽬录格式,window⽬录中间需要使⽤双斜线
remote = '/opt/tianpy5/python/test/'#远程⽂件或⽬录,与本地⼀致,当前为linux⽬录格式
sftp_upload(host,port,username,password,local,remote)#上传
#sftp_download(host,port,username,password,local,remote)#下载
3.总结
以上代码实现了⽂件和⽬录的上传和下载,可以单独上传和下载⽂件,也可以批量上传和下载⽬录中的⽂件,基本实现了所要的功能,但是针对⽬录不存在的情况,以及上传和下载到多台主机上的情况,还有待完善。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。