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 获取进程pid号的方法
Mar 10 Python
python实现的jpg格式图片修复代码
Apr 21 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
python numpy元素的区间查找方法
Nov 14 Python
浅谈python新式类和旧式类区别
Apr 26 Python
Python3进制之间的转换代码实例
Aug 24 Python
Python reversed函数及使用方法解析
Mar 17 Python
python opencv实现简易画图板
Aug 27 Python
Python编写单元测试代码实例
Sep 10 Python
python编写实现抽奖器
Sep 10 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 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实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Python之多进程与多线程的使用
2021/02/23 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
致跳高运动员广播稿
2014/01/13 职场文书
Python类方法总结讲解
2021/07/26 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js