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读取html中指定元素生成excle文件示例
Apr 03 Python
python操作xml文件示例
Apr 07 Python
python3中int(整型)的使用教程
Mar 23 Python
python绘制漏斗图步骤详解
Mar 04 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
Python识别快递条形码及Tesseract-OCR使用详解
Jul 15 Python
Django 项目重命名的实现步骤解析
Aug 14 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
Python手绘可视化工具cutecharts使用实例
Dec 05 Python
python 通过手机号识别出对应的微信性别(实例代码)
Dec 22 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
Feb 06 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
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
Python入门篇之函数
2014/10/20 Python
python机器学习之随机森林(七)
2018/03/26 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
Python subprocess模块常见用法分析
2018/06/12 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
毕业生就业自荐书
2013/12/15 职场文书
自我反省检讨书
2014/01/23 职场文书
行政监察建议书
2014/05/19 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
会计学专业自荐信
2014/06/25 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
在python中读取和写入CSV文件详情
2022/06/28 Python