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 20 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
python实现多线程行情抓取工具的方法
Feb 28 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
Django stark组件使用及原理详解
Aug 22 Python
python实现智能语音天气预报
Dec 02 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
用于ETL的Python数据转换工具详解
Jul 21 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
PHP分享图片的生成方法
2018/04/25 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
Python Django基础二之URL路由系统
2019/07/18 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
医学护理毕业生自荐信
2013/11/07 职场文书
服务员岗位责任制
2014/02/11 职场文书
餐厅总厨求职信
2014/03/04 职场文书
超市活动计划书
2014/04/24 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL