Python 实现文件打包、上传与校验的方法


Posted in Python onFebruary 13, 2019

不多说,我们直接上源码:

# -*- coding:UTF-8 -*-
'''
实现文件打包、上传与校验
Created on 2018年1月12日
@author: liuyazhuang
'''
 
from fabric.api import *
from fabric.context_managers import *
from fabric.contrib.console import confirm
 
env.user = 'root'
env.hosts = ['10.2.2.2']
env.password = 'cardio-2017'
 
@task
@runs_once
def tar_task():  #本地打包任务函数,只限执行一次
  with lcd("/data/logs"):
    local("tar -czf access.tar.gz access.log")
    
 
@task
def put_task():   #上传文件任务函数
  run("mkdir -p /nginx/logs")
  with cd("/nginx/logs"):
    #put(上传操作)出现异常时,继续执行,非终止
    with settings(warn_only = True):
      result = put("/data/logs/access.tar.gz", "/nginx/logs/access.tar.gz")
    if result.failed and not confirm("put file failed, Contiunue[Y/N]?"):
      #出现异常时,确认用户是否继续,(Y继续)
      abort("Aborting file put task!")
 
@task
def check_task():  #校验文件任务函数
  with settings(warn_only = True):
    #本地local命令需要配置capture=True才能捕获返回值
    lmd5 = local("md5sum /data/logs/access.tar.gz", capture=True).split(' ')[0]
    rmd5 = run("md5sum /nginx/logs/access.tar.gz").split(' ')[0]
    #对比本地与远程文件的md5信息
    if lmd5 == rmd5:
      print "OK";
    else:
      print "ERROR"
 
@task
def execute():   #统一执行tar_task()、put_task()、check_task()
  tar_task()
  put_task()
  check_task()

本实例分别定义了3个功能函数,实现了文件的打包、上传和校验的功能,且3个功能相互独立,可分开运行

fab -f file_handler.py tar_task  #文件打包操作
fab -f file_handler.py put_task  #文件上传操作
fab -f file_handler.py check_task #文件校验操作

也可以通过以下命令组合在一起运行

fab -f file_handler.py execute

以上这篇Python 实现文件打包、上传与校验的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用Python的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
python中字符串前面加r的作用
Jun 04 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
Apr 19 Python
python 通过字符串调用对象属性或方法的实例讲解
Apr 21 Python
利用Pycharm断点调试Python程序的方法
Nov 29 Python
python面试题之列表声明实例分析
Jul 08 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
pytorch:model.train和model.eval用法及区别详解
Feb 20 Python
python与idea的集成的实现
Nov 20 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 Python
使用python3构建文件传输的方法
Feb 13 #Python
对python 自定义协议的方法详解
Feb 13 #Python
Python 实现两个服务器之间文件的上传方法
Feb 13 #Python
Python魔法方法详解
Feb 13 #Python
Python函数中不定长参数的写法
Feb 13 #Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 #Python
python调用c++传递数组的实例
Feb 13 #Python
You might like
Terran热键控制
2020/03/14 星际争霸
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
javascript中Object使用详解
2015/01/26 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
vue中使用input[type="file"]实现文件上传功能
2018/09/10 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
基于Python的身份证号码自动生成程序
2014/08/15 Python
python端口扫描系统实现方法
2014/11/19 Python
Python中os.path用法分析
2015/01/15 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
使用Python发现隐藏的wifi
2020/03/04 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
求职信的要素有哪些呢
2013/12/26 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
争先创优心得体会
2014/09/12 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
社区服务活动报告
2015/02/05 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle