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 相关文章推荐
简介Django框架中可使用的各类缓存
Jul 23 Python
Python的Django框架中消息通知的计数器实现教程
Jun 13 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
python3实现zabbix告警推送钉钉的示例
Feb 20 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
Python切图九宫格的实现方法
Oct 10 Python
Python列表如何更新值
May 27 Python
基于python 取余问题(%)详解
Jun 03 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
Python实现的扫码工具居然这么好用!
Jun 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
在Python中使用元类的教程
2015/04/28 Python
Python使用chardet判断字符编码
2015/05/09 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
python判断自身是否正在运行的方法
2019/08/08 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
C#中的验证控件有几种
2014/03/08 面试题
毕业生简单求职信
2013/11/19 职场文书
发展部经理职责规定
2014/02/22 职场文书
经济管理专业求职信
2014/06/09 职场文书
法学专业求职信
2014/07/15 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python