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中实现的RC4算法
Feb 14 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 Python
python实现多线程抓取知乎用户
Dec 12 Python
Python实现连接MySql数据库及增删改查操作详解
Apr 16 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
Django 开发环境配置过程详解
Jul 18 Python
python之pexpect实现自动交互的例子
Jul 25 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
python可视化实现KNN算法
Oct 16 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
解决python DataFrame 打印结果不换行问题
Apr 09 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安装为Apache DSO
2006/10/09 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
python导入时小括号大作用
2017/01/10 Python
python实现BackPropagation算法
2017/12/14 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
宿舍违规检讨书
2014/01/12 职场文书
战友聚会邀请函
2014/01/18 职场文书
3的组成教学反思
2014/04/30 职场文书
捐书活动总结
2014/05/04 职场文书
优秀班主任材料
2014/12/16 职场文书
学生保证书格式
2015/02/27 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python