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中的闭包总结
Sep 18 Python
python结合opencv实现人脸检测与跟踪
Jun 08 Python
详解用python实现简单的遗传算法
Jan 02 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
django解决订单并发问题【推荐】
Jul 31 Python
pytorch自定义初始化权重的方法
Aug 17 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
Python pip install如何修改默认下载路径
Apr 29 Python
详解anaconda离线安装pytorchGPU版
Sep 08 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
编写PHP的安全策略
2006/10/09 PHP
php 执行系统命令的方法
2009/07/07 PHP
ini_set的用法介绍
2014/01/07 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
php递归实现无限分类的方法
2015/07/28 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
初步理解Python进程的信号通讯
2015/04/09 Python
python 中的int()函数怎么用
2017/10/17 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
Python实现的简单计算器功能详解
2018/08/25 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
人事专员岗位职责
2013/11/20 职场文书
连带责任保证书
2014/04/29 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
钳工实训报告总结
2014/11/04 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python