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实现自动登录人人网并访问最近来访者实例
Sep 26 Python
Python2随机数列生成器简单实例
Sep 04 Python
Python简单实现控制电脑的方法
Jan 22 Python
python 实现selenium断言和验证的方法
Feb 13 Python
Python 获取ftp服务器文件时间的方法
Jul 02 Python
Python调用C语言的实现
Jul 26 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
python字符串下标与切片及使用方法
Feb 13 Python
Pytest参数化parametrize使用代码实例
Feb 22 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
python与js主要区别点总结
Sep 13 Python
一文带你掌握Pyecharts地理数据可视化的方法
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
php fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
初识Node.js
2015/03/20 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
对PyTorch torch.stack的实例讲解
2018/07/30 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Python多线程获取返回值代码实例
2020/02/17 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
最新会计专业求职信范文
2014/01/28 职场文书
音乐器材管理制度
2014/01/31 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
决心书格式范文
2015/09/23 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL