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连接mysql驱动有关问题(windows版本)
Apr 23 Python
Python爬虫代理IP池实现方法
Jan 05 Python
使用pandas的DataFrame的plot方法绘制图像的实例
May 24 Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 Python
Pycharm 2019 破解激活方法图文详解
Oct 11 Python
Python aiohttp百万并发极限测试实例分析
Oct 26 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
python实现交并比IOU教程
Apr 16 Python
python工具快速为音视频自动生成字幕(使用说明)
Jan 27 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检测图片木马多进制编程实践
2013/04/11 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
vue实现选中效果
2020/10/07 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
python去除文件中重复的行实例
2018/06/29 Python
Python利用scapy实现ARP欺骗的方法
2019/07/23 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
自主招生自荐书
2013/11/29 职场文书
应届生自我鉴定
2013/12/11 职场文书
要账委托书范本
2014/09/15 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
外出听课学习心得体会
2016/01/15 职场文书
python如何在word中存储本地图片
2021/04/07 Python