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通过urllib2爬网页上种子下载示例
Feb 24 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
Python使用gensim计算文档相似性
Apr 10 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
Python3 log10()函数简单用法
Feb 19 Python
Python Pandas数据中对时间的操作
Jul 30 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
python zip,lambda,map函数代码实例
Apr 04 Python
如何利用python发送邮件
Sep 26 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 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 高手之路(一)
2006/10/09 PHP
PHP 错误之引号中使用变量
2009/05/04 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
JavaScript Date对象使用总结
2009/05/14 Javascript
jquery 简单导航实现代码
2009/09/11 Javascript
jQuery 获取URL参数的插件
2010/03/04 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Python机器学习之决策树算法实例详解
2017/12/06 Python
在python中用url_for构造URL的方法
2019/07/25 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
土木工程专业大学毕业生求职信
2013/10/13 职场文书
手术室护士自我鉴定
2013/10/14 职场文书
《风筝》教学反思
2014/04/10 职场文书
校园文明倡议书
2014/05/16 职场文书
公诉意见书范文
2015/06/05 职场文书
感恩主题班会教案
2015/08/12 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
Python之matplotlib绘制饼图
2022/04/13 Python