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解析模块(ConfigParser)使用方法
Dec 10 Python
python实现telnet客户端的方法
Apr 15 Python
Python 常用string函数详解
May 30 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
python进行文件对比的方法
Dec 24 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
python 实现视频 图像帧提取
Dec 10 Python
python读取ini配置文件过程示范
Dec 23 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
Django跨域资源共享问题(推荐)
Mar 09 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 22 Python
Python echarts实现数据可视化实例详解
Mar 03 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 array_walk() 数组函数
2011/07/12 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
javascript 获取页面的高度及滚动条的位置的代码
2010/05/06 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
Python logging模块学习笔记
2014/05/24 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
python调用staf自动化框架的方法
2018/12/26 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
Python画图高斯分布的示例
2019/07/10 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
python序列类型种类详解
2020/02/26 Python
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
秘书行业自我鉴定范文
2013/12/30 职场文书
团组织关系介绍信
2014/01/12 职场文书
大课间活动制度
2014/01/18 职场文书
婚前保证书
2014/04/29 职场文书
政府法律服务方案
2014/06/14 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
灵山大佛导游词
2015/02/04 职场文书
初一军训感言
2015/08/01 职场文书