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在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
在Python中使用dict和set方法的教程
Apr 27 Python
Python中isnumeric()方法的使用简介
May 19 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
pytorch中的inference使用实例
Feb 20 Python
PyQt5实现简单的计算器
May 30 Python
python的help函数如何使用
Jun 11 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
django使用多个数据库的方法实例
Mar 04 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代码
2008/09/10 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
Python判断Abundant Number的方法
2015/06/15 Python
Python实现简单的四则运算计算器
2016/11/02 Python
详解Python核心对象类型字符串
2018/02/11 Python
Python简单生成随机数的方法示例
2018/03/31 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
世界汽车零件:World Car Parts
2019/09/04 全球购物
文明学生标兵事迹
2014/01/21 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
新员工入职感想
2015/08/07 职场文书
导游词之西递宏村
2019/12/10 职场文书
500字作文之周记
2019/12/13 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
Hive HQL支持2种查询语句风格
2022/06/25 数据库