python实现上传文件到linux指定目录的方法


Posted in Python onJanuary 03, 2020

今天接到一个小需求,就是想在windows环境下,上传压缩文件到linux指定的目录位置并且解压出来,然后我想了一下,这个可以用python试试写下。

环境:

1.linux操作系统一台
2.windows环境安装Python3.x
3.Pycharm IDE环境

大家如果对paramiko模块不熟悉的话,可以去了解哈。

上传文件用到SFTPCLient,SFTPCLient作为一个sftp的客户端对象,根据ssh传输协议的sftp会话,实现远程文件操作,如上传、下载、权限、状态。

代码如下

#!/usr/bin/env python
import paramiko
import sys
src_file = sys.argv[1]#windows下的源文件
dsc_path = sys.argv[2]
#linux上的目录路径
key_path = '私钥路径'
password = '密码'
ssh = paramiko.SSHClient() # 创建SSH对象
private_key = paramiko.RSAKey.from_private_key_file(key_path) # 指定私钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 允许连接不在know_hosts文件中的主机
transport = paramiko.Transport(('ip', 端口号))
transport.connect(username='root', pkey=private_key) # 连接服务器
def upload():
  sftp = paramiko.SFTPClient.from_transport(transport)
  try:
    sftp.put(src_file, dsc_path + '/' + src_file)
    print('上传成功')
  except Exception as e:
    print(e)
  ssh.close()
def unzip():
  ssh._transport = transport
  stdin, stdout, stderr = ssh.exec_command('cd ' + dsc_path + '&&' + 'unzip -o ' + src_file)
  result = stdout.read().decode()
  if result.strip() != '':
    print('解压成功')
  else:
    print('Error message ' + stderr.read().decode())
  ssh.close()
if __name__ == '__main__':
  upload()
  unzip()

可以分别通过Pycharm或者cmd来测试脚本运行,下面是用pycharm测试,把apps.zip文件上传到Linux服务器的/tmp目录下,并且解压

python upload_file.py apps.zip /tmp
 上传成功
 解压成功

然后登陆到Linux服务器的/tmp目录查看是否有压缩文件并且解压

python实现上传文件到linux指定目录的方法 

总结 :这只是一个简单上传解压功能,请多多指教。

总结

以上所述是小编给大家介绍的python实现上传文件到linux指定目录的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python使用MONGODB入门实例
May 11 Python
详解python中executemany和序列的使用方法
Aug 12 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
详解重置Django migration的常见方式
Feb 15 Python
python处理excel绘制雷达图
Oct 18 Python
PyQt5实现登录页面
May 30 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 Python
Python如何创建装饰器时保留函数元信息
Aug 07 Python
python向企业微信发送文字和图片消息的示例
Sep 28 Python
python re的findall和finditer的区别详解
Nov 15 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 #Python
django商品分类及商品数据建模实例详解
Jan 03 #Python
PyTorch和Keras计算模型参数的例子
Jan 02 #Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 #Python
PyTorch中topk函数的用法详解
Jan 02 #Python
Pytorch训练过程出现nan的解决方式
Jan 02 #Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 #Python
You might like
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
Python Selenium截图功能实现代码
2020/04/26 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
公司董事长职责
2013/12/12 职场文书
业务部主管岗位职责
2014/01/29 职场文书
模范家庭事迹材料
2014/02/10 职场文书
好学生评语大全
2014/05/05 职场文书
六查六看心得体会
2014/10/14 职场文书
学生打架检讨书
2014/10/20 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers