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 相关文章推荐
简单的编程0基础下Python入门指引
Apr 01 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
Python面向对象类继承和组合实例分析
May 28 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
Oct 31 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
使用Python的networkx绘制精美网络图教程
Nov 21 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
Python基础之字符串操作常用函数集合
Feb 09 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 Python
python 模块重载的五种方法
Apr 24 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提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
javascript call方法使用说明
2010/01/11 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
[20:30]职业巡回赛回顾
2018/08/09 DOTA
python局域网ip扫描示例分享
2014/04/03 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
Python单元测试实例详解
2018/05/25 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
项目经理的岗位职责
2013/11/23 职场文书
总裁助理岗位职责
2014/02/17 职场文书
运动会宣传口号
2014/06/09 职场文书
离婚协议书样本
2015/01/26 职场文书
晚会开幕词
2015/01/28 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers