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 中文字符串的处理实现代码
Oct 25 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 Python
Python实现连接postgresql数据库的方法分析
Dec 27 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
Python读取csv文件分隔符设置方法
Jan 14 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
学习Python需要哪些工具
Sep 04 Python
jupyter notebook远程访问不了的问题解决方法
Jan 11 Python
Python语言规范之Pylint的详细用法
Jun 24 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
咖啡与水的关系
2021/03/03 冲泡冲煮
php中使用临时表查询数据的一个例子
2013/02/03 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
php实现的mongodb操作类
2015/05/28 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
javascript连续赋值问题
2015/07/08 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
教师竞聘演讲稿
2014/05/16 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
毕业生个人自荐书
2015/03/05 职场文书
社区党务工作总结2015
2015/05/19 职场文书
办公室管理规章制度
2015/08/04 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers