python实现批处理文件


Posted in Python onJuly 28, 2020

本文实例为大家分享了python实现批处理文件的具体代码,供大家参考,具体内容如下

Windows下的bat, linux 下的shell 用来做批处理都很好用,可惜不通用
用 Python 来做就简单多了,不过一条条写代码来调用系统命令也够烦的了
程序员都很懒, 不愿做机械无谓的重复性工作, 干脆自己实现一个.

用法超级简单, 默认会执行一个自定义的 batch.json, 按顺序一条条执行其中的步骤

{"steps": 
 [
 {"step":"df -h","desc":"display disk space usage"},
 {"step":"date","desc":"display the current dater"},
 {"step":"time","desc":"display the current time"}
 ]
}

用法:

python batch.py

当然也可以指定不同的步骤文件 , 例如

python batch.py xxx.json

运行结果以markdown形式输出, 例如

$ python batch.py
Usage: python batch.py <batch_json_file>
note: execute the batch.json by default
# Execute batch.json begin
---------------------------

## Will execute 3 steps
~~~~~~~~~~~~~~~~~~~~~~~~~~~
0. [df -h]: display disk space usage
1. [date]: display the current dater
2. [time]: display the current time

* 0. [df -h]: display disk space usage
Filesystem       Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1       233Gi 208Gi 24Gi 90% 54622825 6364694 90% /
devfs        329Ki 329Ki 0Bi 100%  

* 1. [date]: display the current dater
Thu Mar 3 22:50:21 CST 2016

* 2. [time]: display the current time

real 0m0.001s
user 0m0.000s
sys 0m0.000s

## Done the following steps
~~~~~~~~~~~~~~~~~~~~~~~~~~~
0. [df -h]: display disk space usage
1. [date]: display the current dater
# Execute batch.json end.

Python源代码如下, 希望有人能用得上

'''
 like bat file, execute the steps in batch.json 
'''
import os,sys,subprocess
import time,thread
import codecs
import json
from datetime import datetime
from subprocess import call
from pprint import pprint

def execute_json(json_file):
 print "# Execute {0} begin\n---------------------------".format(json_file)

 json_data=open(json_file)
 data = json.load(json_data)
 cnt = len(data['steps'])
 i = 0
 print "\n## Will execute {0} steps \n~~~~~~~~~~~~~~~~~~~~~~~~~~~".format(cnt)
 for i in range(0, cnt):
   print "{0}. [{1}]: {2}".format(i, data['steps'][i]['step'], data['steps'][i]['desc'])

 #pprint(data)
 #print("cnt=", cnt)
 for i in range(0, cnt):
  cmd = data['steps'][i]['step']
  desc = data['steps'][i]['desc']
  print "\n* {0}. [{1}]: {2} ".format(i, cmd, desc)

  if(cmd.startswith('cd')):
   cmd = cmd.replace("cd ", "")
   os.chdir(cmd)
  else:
   ret = os.system(cmd)
   if(ret != 0):
    print "Encounter error of step {0}. {1}, error code={2}".format(i, cmd, ret)
    break

 print "\n## Done the following steps\n~~~~~~~~~~~~~~~~~~~~~~~~~~~"
 for j in range(0, i):
  print "{0}. [{1}]: {2}".format(j, data['steps'][j]['step'], data['steps'][j]['desc']) 
 json_data.close()
 print "# Execute {0} end.".format(json_file)

if __name__ == "__main__":
 argc = len(sys.argv)
 step_file = 'batch.json'
 if( argc > 1):
  idx = 1
  while(idx < argc):
   step_file = sys.argv[idx]
   execute_json(step_file)
   idx = idx + 1
 else:
  print "Usage: python {0} <batch_json_file>".format(sys.argv[0])
  print "note: execute the batch.json by default"
  execute_json(step_file)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python学习之Anaconda的使用与配置方法
Jan 04 Python
python数字图像处理实现直方图与均衡化
May 04 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
浅谈python中get pass用法
Mar 19 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
基于pytorch padding=SAME的解决方式
Feb 18 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
用Python制作灯光秀短视频的思路详解
Apr 13 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
Python 如何解决稀疏矩阵运算
May 26 Python
使用Pytorch实现two-head(多输出)模型的操作
May 28 Python
Python之Matplotlib绘制热力图和面积图
Apr 13 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
Jul 28 #Python
python爬虫请求头设置代码
Jul 28 #Python
详解python安装matplotlib库三种失败情况
Jul 28 #Python
最简单的matplotlib安装教程(小白)
Jul 28 #Python
Python 如何实现访问者模式
Jul 28 #Python
Matplotlib 折线图plot()所有用法详解
Jul 28 #Python
matplotlib.pyplot.plot()参数使用详解
Jul 28 #Python
You might like
基于mysql的bbs设计(二)
2006/10/09 PHP
再次研究下cache_lite
2007/02/14 PHP
php页面防重复提交方法总结
2013/11/25 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
python求列表交集的方法汇总
2014/11/10 Python
详解Python字符串对象的实现
2015/12/24 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
Python 将pdf转成图片的方法
2018/04/23 Python
pytorch 数据集图片显示方法
2018/07/26 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
社区活动邀请函范文
2014/01/29 职场文书
一年级语文教学反思
2014/02/13 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书