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程序中使用SQLAlchemy时出现乱码的解决方案
Apr 24 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
python交互式图形编程实例(一)
Nov 17 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
python中csv文件的若干读写方法小结
Jul 04 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
Aug 12 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
python统计字符的个数代码实例
Feb 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
PHP的分页功能
2007/03/21 PHP
深入解析php中的foreach函数
2013/08/31 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
PHP PDO操作总结
2014/11/17 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Python3基础之list列表实例解析
2014/08/13 Python
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
Python微信操控itchat的方法
2019/05/31 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
python中def是做什么的
2020/06/10 Python
Python自带的IDE在哪里
2020/07/01 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
采购员岗位职责
2013/11/15 职场文书
西北政法大学自主招生自荐信
2014/01/29 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
创业计划书之宠物店
2019/09/19 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers