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批量添加zabbix Screens的两个脚本分享
Jan 16 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
python实现换位加密算法的示例
Oct 14 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
python的slice notation的特殊用法详解
Dec 27 Python
Python使用type动态创建类操作示例
Feb 29 Python
PyQt5-QDateEdit的简单使用操作
Jul 12 Python
去除python中的字符串空格的简单方法
Dec 22 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
Python自动化爬取天眼查数据的实现
Jun 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
mysql 全文搜索 技巧
2007/04/27 PHP
PHP安全性漫谈
2012/06/28 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
双冒号 ::在PHP中的使用情况
2015/11/05 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python executemany的使用及注意事项
2017/03/13 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
学Python 3的理由和必要性
2019/11/19 Python
Django的CVB实例详解
2020/02/10 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
如何在django中运行scrapy框架
2020/04/22 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
护理学应聘自荐书范文
2014/02/05 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
就业导师推荐信范文
2015/03/27 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
安全生产会议制度
2015/08/06 职场文书