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中非常实用的一些功能和函数分享
Feb 14 Python
python计算方程式根的方法
May 07 Python
python数据结构之图深度优先和广度优先实例详解
Jul 08 Python
Python中常用信号signal类型实例
Jan 25 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
使用Python制作一个打字训练小工具
Oct 01 Python
基于python调用psutil模块过程解析
Dec 20 Python
Python使用pdb调试代码的技巧
May 03 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
matplotlib教程——强大的python作图工具库
Oct 15 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/04/25 PHP
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
在thinkphp5.0路径中实现去除index.php的方式
2019/10/16 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
python实现微信小程序自动回复
2018/09/10 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
python Shapely使用指南详解
2020/02/18 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
英国工具中心:UK Tool Centre
2017/07/10 全球购物
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
经典优秀个人求职信分享
2013/12/12 职场文书
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
小露珠教学反思
2014/04/30 职场文书
李开复演讲稿
2014/05/24 职场文书
大学生创业计划书
2014/08/14 职场文书
心得体会的写法
2014/09/05 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python
Sql Server之数据类型详解
2022/02/28 SQL Server