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解析文件示例
Jan 23 Python
Python中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
python Tkinter版学生管理系统
Feb 20 Python
python flask搭建web应用教程
Nov 19 Python
pycharm修改file type方式
Nov 19 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Python logging模块handlers用法详解
Aug 14 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Apr 07 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
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
js 内存释放问题
2010/04/25 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
在Django框架中运行Python应用全攻略
2015/07/17 Python
python 爬取微信文章
2016/01/30 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python SQLite3简介
2018/02/22 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
乡下人家教学反思
2014/02/01 职场文书
中学生运动会入场词
2014/02/12 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
学校个人对照检查材料
2014/08/26 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
Pytorch 实现变量类型转换
2021/05/17 Python