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 正则表达式的高级用法
Dec 04 Python
Python递归函数定义与用法示例
Jun 02 Python
python实现汽车管理系统
Nov 30 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
Python如何向SQLServer存储二进制图片
Jun 08 Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 Python
python如何代码集体右移
Jul 20 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 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
用session做客户验证时的注意事项
2006/10/09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
文本框回车提交与禁止提交示例
2013/09/27 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
基于Python os模块常用命令介绍
2017/11/03 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
幼儿园美术教学反思
2014/01/31 职场文书
宣传标语大全
2014/07/01 职场文书
优秀教师先进个人事迹材料
2014/08/31 职场文书
世界遗产导游词
2015/02/13 职场文书
任命书格式模板
2015/09/22 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android