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写的贪吃蛇游戏例子
Jun 16 Python
Python bsddb模块操作Berkeley DB数据库介绍
Apr 08 Python
Python3处理文件中每个词的方法
May 22 Python
Python编程深度学习计算库之numpy
Dec 28 Python
Python的UTC时间转换讲解
Feb 26 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
django框架auth模块用法实例详解
Dec 10 Python
Python阶乘求和的代码详解
Feb 14 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
Python3爬虫关于识别检验滑动验证码的实例
Jul 30 Python
Python3+Appium安装及Appium模拟微信登录方法详解
Feb 16 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 var_dump()函数的详解
2013/06/05 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
thinkPHP查询方式小结
2016/01/09 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
jquery 批量上传图片实现代码
2010/01/28 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
Python实现遍历数据库并获取key的值
2015/05/17 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
python去掉行尾的换行符方法
2017/01/04 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
Python运行异常管理解决方案
2020/03/09 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
django使用graphql的实例
2020/09/02 Python
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
土木工程专业大学毕业生求职信
2013/10/13 职场文书
单位委托书怎么写
2014/09/21 职场文书
2015年党员承诺书
2015/01/21 职场文书
个人工作表现自我评价
2015/03/06 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
vue elementUI批量上传文件
2022/04/26 Vue.js