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之引用和类属性的初步理解
May 15 Python
python读取二进制mnist实例详解
May 31 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
Aug 02 Python
python使用KNN算法识别手写数字
Apr 25 Python
python字典排序的方法
Oct 12 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
python使用隐式循环快速求和的实现示例
Sep 11 Python
GitHub上值得推荐的8个python 项目
Oct 30 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 中的类
2006/10/09 PHP
php 输出双引号"与单引号'的方法
2010/05/09 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
python自动化测试之setUp与tearDown实例
2014/09/28 Python
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
深入理解python中的atexit模块
2017/03/07 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
Python基于WordCloud制作词云图
2019/11/29 Python
python能做哪些生活有趣的事情
2020/09/09 Python
幼儿发展评估方案
2014/06/11 职场文书
七一党日活动总结
2014/07/08 职场文书
中秋节祝酒词
2015/08/12 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
java设计模式--建造者模式详解
2021/07/21 Java/Android
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸
Python读取和写入Excel数据
2022/04/20 Python