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常见文件操作的函数示例代码
Nov 15 Python
Python删除指定目录下过期文件的2个脚本分享
Apr 10 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
Python实现批量执行同目录下的py文件方法
Jan 11 Python
20行python代码的入门级小游戏的详解
May 05 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
python retrying模块的使用方法详解
Sep 25 Python
简单了解python元组tuple相关原理
Dec 02 Python
kafka-python 获取topic lag值方式
Dec 23 Python
Python如何把多个PDF文件合并代码实例
Feb 13 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php数据访问之增删改查操作
2016/05/09 PHP
js 操作符实例代码
2009/10/24 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
javascript求日期差的方法
2016/03/02 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
详解Vue方法与事件
2017/03/09 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
实习求职信
2013/12/01 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
小学安全汇报材料
2014/08/14 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
2015国庆节宣传语
2015/07/14 职场文书
技能培训通讯稿
2015/07/18 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
MySQL自定义函数及触发器
2022/08/05 MySQL