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中使用gzip模块压缩文件的简单教程
Apr 08 Python
聊聊Python中的pypy
Jan 12 Python
python中字符串的操作方法大全
Jun 03 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
python对execl 处理操作代码
Jun 22 Python
Pycharm 2020.1 版配置优化的详细教程
Aug 07 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
浅谈Python列表嵌套字典转化的问题
Apr 07 Python
Django给表单添加honeypot验证增加安全性
May 06 Python
分析Python list操作为什么会错误
Nov 17 Python
基于Python实现对比Exce的工具
Apr 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
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
python 中random模块的常用方法总结
2017/07/08 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
c语言常见笔试题总结
2016/09/05 面试题
试述DBMS的主要功能
2016/11/13 面试题
习总书记三严三实学习心得体会
2014/10/13 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript