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的汉字转GBK码实现代码
Feb 19 Python
python通过ssh-powershell监控windows的方法
Jun 02 Python
VSCode下好用的Python插件及配置
Apr 06 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
python3注册全局热键的实现
Mar 22 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
python mock测试的示例
Oct 19 Python
如何一键升级Python所有包
Nov 05 Python
Python基础之Socket通信原理
Apr 22 Python
教你怎么用python selenium实现自动化测试
May 27 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
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
javascript与CSS复习(二)
2010/06/29 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
实例浅析js的this
2016/12/11 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
理解Python垃圾回收机制
2016/02/12 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
linux面试题参考答案(3)
2012/09/13 面试题
医学护理系毕业生求职信
2013/10/01 职场文书
给医务人员表扬信
2014/01/12 职场文书
通信生自我鉴定
2014/01/18 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
五好关工委申报材料
2014/05/31 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技