[2019.04.16] 由Python写成的自动解压脚本
很久很久以前(二十七天吧……大概)被要求写一个脚本来检索并解压磁盘上所有的以特定格式命名的tar文件,于是乎学习和摸鱼就一起开始了。
这次要写的脚本,针对的是这样的文件结构:
文件结构如上图所示
可以看到一个tar包里面套着两个tgz压缩包,我需要完成如下图所示的工作:
PressOn是个好东西
在Python中,有两个可以调用系统指令的包,一个叫做sys,一个叫做os。比较棒的是它们在高级语言层面上是不区分操作系统的,同样一个变量 curdir 在 linux 下和在 win下都能拿到针对此操作系统可用的路径。而os.system() 或者 os.popen() 都可以完成将括号内带的参数变成系统使用的指令的工作,只要给出的指令是正确的。
在此次脚本编写中我学到一些新鲜玩意,在这里记录下来便于自己查阅。
1 #! usr/bin/python 2 import sys 3 import re 4 import os 5 6 errorMsg = "Usage: python unzipAutoTriage.py [File location]. If File location was ommitted, script will work at current location." 7 8 9 if len(sys.argv) == 1: 10 msg = raw_input("No arguments, script will work at current path(y/n):") 11 if msg != "y": 12 sys.exit(errorMsg) 13 path = "." 14 elif len(sys.argv) >= 3: 15 if re.match(r'~?[a-zA-Z/\_.]*',sys.argv[1]) != None: 16 print "Too many arguments, do you want to execute in", sys.argv[1], "(y/n):" 17 msg = raw_input() 18 if msg != "y": 19 sys.exit(errorMsg) 20 else: 21 path = sys.argv[1] 22 print path 23 24 command = "find " + path + " -mount -name 'auto_triage*.tar'" 25 filelist = os.popen(command).readlines() 26 status = dict.fromkeys(filelist,"Not complete") # 创建一个字典用于保存每个文件的处理状态 27 print "Found" , len(filelist) , "File" 28 if len(filelist) <= 0: 29 sys.exit("No such file, exiting....") 30 31 rootPath = os.path.abspath(os.curdir) # 保存一下运行起始目录,之后需要回来才能继续进行操作 32 33 for path in filelist: 34 command = re.sub(r'auto.*.tar$','',path).replace("\n",'') 35 if os.path.abspath(os.curdir).split("/")[-1] != command.split("/")[-1]: 36 os.chdir(command) # 更换目录不能用os.system("cd xxxx")这种方法,过不去的…… 37 print "unzipping", path 38 command = "tar -xvf " + re.sub(r'^\..*/auto','auto',path) 39 res = os.system(command) 40 if res == 0: 41 flag = 2 42 for item in ["spa","spb"]: 43 print "extracting ",item 44 command = "tar -xzvf " + path + item + ".service_dc.tgz -C " + path 45 command = re.sub(r'.tar\n','/',command) 46 res = os.system(command) 47 if res == 0: 48 flag -= flag # Python逻辑里面可没有什么自增自减! 49 else: 50 status[path] = str(flag) + " unzip subprogress failed" 51 if flag == 0: 52 status[path] = "completed" 53 else: 54 status[path] = "Failed" 55 os.chdir(rootPath) 56 print "****************\nStatus report\n****************" 57 for key,value in status.items(): 58 print '{key}Status: {value}'.format(key = key, value = value)
具体踩到的一些坑,就记载到 https://www.cnblogs.com/jackablack/p/10614686.html 采坑合集里面吧!
转载于:https://www.cnblogs.com/jackablack/p/10717727.html
[2019.04.16] 由Python写成的自动解压脚本相关推荐
- 教你用Python写一个京东自动下单抢购脚本(Python实现京东自动抢购)
很多朋友都有网购抢购限量商品的经历,有时候蹲点抢怎么也抢不到,今天小编带你们学习怎么用Python写一个京东自动下单抢购脚本,以后再也不用拼手速拼网速啦,快来一起看看吧 1 问题背景 经过无数次抢购失 ...
- qq机器人自动回复带脚本可以实现吗_有人用Python写了个自动亏钱脚本,还能微信实时通知!
本系列所有文章的开头都会用一两句话总结一下对应文章的内容.对这个话题感兴趣的话可以继续往下读,不感兴趣可以直接关掉,绝不浪费读者的时间. 总结 本篇文章用 Python 实现了一个简单的自动交易脚本, ...
- 有人用Python写了个自动亏钱脚本,还能微信实时通知!
本系列所有文章的开头都会用一两句话总结一下对应文章的内容.对这个话题感兴趣的话可以继续往下读,不感兴趣可以直接关掉,绝不浪费读者的时间. 总结 本篇文章用 Python 实现了一个简单的自动交易脚本, ...
- python解压打开文件过多_自动解压大量压缩文件 Python 脚本 | 学步园
之前写了一个自动解压压缩文件到压缩文件所在文件夹的脚本 后根据自己需要,写了另外两个.原理一样 都是使用winrar的命令 第一个脚本没考虑周到,只能解压rar文件 改进后可以支持winrar支持的各 ...
- 如何在MATLAB中调用(运行)“用Python写成的函数或脚本”
如何在MATLAB中调用"用Python写成的函数或脚本",首先要确保MATLAB知道咱们的Python解释器的位置在哪里. 如果安装了Python的时候把Python加入了系统环 ...
- 【电子邮件提醒】用python写个能发邮件的脚本
[电子邮件提醒]用python写个能发邮件的脚本 文章目录 [电子邮件提醒]用python写个能发邮件的脚本 邮箱使用 使用python发邮件 封装一个发邮件的类 发邮件类 使用说明 前言 : 使用p ...
- python脚本自动化赚钱系统_自从用python写了个自动弹幕脚本后,各大主播都来找我,净赚十万!...
Python Python开发 Python语言 自从用python写了个自动弹幕脚本后,各大主播都来找我,净赚十万! 大家好,今天又给大家带来了Python爬虫的分享,今天我们继续上次的问题,继续来 ...
- python list转字符串_我用python写了个自动生成给文档生成索引的脚本!懒人智慧...
我用 python 写了一个自动生成索引的脚本 简介:为了刷算法题,建了一个 GitHub仓库: PiperLiu / ACMOI_Journey ,记录自己的刷题轨迹,并总结一下方法.心得.想到一个 ...
- 「懒惰的美德」我用 python 写了个自动生成给文档生成索引的脚本
我用 python 写了一个自动生成索引的脚本 简介:为了刷算法题,建了一个 GitHub仓库:PiperLiu / ACMOI_Journey,记录自己的刷题轨迹,并总结一下方法.心得.想到一个需求 ...
- 为了帮学姐完成了钢琴家梦想,我用Python写了一个自动弹钢琴脚本,轻松弹奏出《天空之城》
人生苦短,我用Python 絮叨絮叨 效果展示 功能实现 代码实现 准备演奏 絮叨絮叨 事情是这样的,学姐马上要毕业了,前两天跟我彻夜长谈,还说自己一直有个钢琴家的梦想. 这不为了帮学姐圆梦,在我经过 ...
最新文章
- HTML中的div标签
- C语言用递归函数求1累加到100求和
- 数据库开发——MySQL——单表查询
- Leetcode 187.重复的DNA序列
- 前端学习(3220):props的简写方式
- 记录一次@Transactional问题处理
- VMware下Mac系统自适应屏幕
- Linux操作系统原理— 进程与线程管理
- 李宏毅机器学习笔记:机器学习介绍
- udp测试工具linux系统,网络测试工具下载_Packet Sender(UDP/TCP网络测试工具)
- 网站接入qq客服在线聊天
- 关于美颜滤镜您了解多少?
- android+微博点赞动画,模仿微博点赞动画
- 一只菜鸟的前端实习记录(碎碎念)
- 根据项目或WBS结算规则批量生成下阶WBS的结算规则-CJB2
- 【Verilog数字系统设计(夏雨闻)5-------模块的结构、数据类型、变量和基本运算符号1】
- 什么是盐加密 为什么使用盐加密密码
- 计算机软件标杆企业,张军平老师—人工智能专家,复旦大学教授,博士生导师,中国计算机协会人工智能专委会委员,软件学报和自动化学报责任编辑...
- 计算机病毒按危害程度分类可分为,计算机病毒按其危害程度可分为
- 2008年最精彩科技图片:电流运动模拟图居首
热门文章
- .net 导出excel_.NET Core一行代码导入导出Excel生成Word
- linux的df命令根目录,详细分析Linux df命令的使用方法
- MSSQL 构建函数提取指定的字符
- html调用rpst 源码_parseHTML 函数源码解析(四) AST 基本形成
- python中如何调用图像处理库_python怎么调用图像处理
- 用matlab解根3乘根2,数值计算课后习题答案--石瑞民.doc
- 计算机专业基础 -- Java语言相关基础知识
- 开源一套基于 React Naitve 的业务驱动型 UI 组件库:react-native-atlas
- python3之线程
- tween.js 中文使用指南