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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 使用Windows批处理和WMI设置Python的环境变量方法

    大概在Python2.7.xx以前,安装Python时环境变量是需要自己设的,所以自己做了一个批处理文件.bat来设置环境变量Path,通过WMI命令wmic来实现. ::检查path中有没有相关路径 echo %path%|findstr /i "c:\python27\scripts"&&(goto run) ::先添加,防止没有时修改出错 wmic ENVIRONMENT create name="path",VariableValue=&qu

  • 批处理与python代码混合编程的方法

    批处理可以很方便地和其它各种语言混合编程,除了好玩,还有相当的实用价值,比如windows版的ruby gem包管理器就是运用了批处理和ruby的混合编写,bathome出品的命令工具包管理器bcn 使用了bat+jscript的混编实现的. cn-dos和bathome论坛里先后有帖子介绍和示范了批处理和各种语言脚本的混合编程,有兴趣可以搜索看看. python不挑剔文件后缀,只要程序中包含正确的python代码都可以用python 解释器解释执行. 批处理与python的混合编程方法很简单,

  • python实现感知器算法(批处理)

    本文实例为大家分享了Python感知器算法实现的具体代码,供大家参考,具体内容如下 先创建感知器类:用于二分类 # -*- coding: utf-8 -*- import numpy as np class Perceptron(object): """ 感知器:用于二分类 参照改写 https://blog.csdn.net/simple_the_best/article/details/54619495 属性: w0:偏差 w:权向量 learning_rate:学习率

  • 浅谈Python批处理文件夹中的txt文件

    1 文件处理形式  近期由于处理大量数据,所以对于采用python进行处理文件的一些操作也打算整理一下:接下来主要说一下如何处理目录下的一系列txt文件.首先看一下我们将要处理目录下的15个类似的数据文件,其中提取的数据如图所示,以及在读写文件时所需要的关键词,可以让程序正确读写相应的数据 2.代码段-python 接下来就是贴出相应的python代码,具体一些关键的注释我已经标注好了,具体数据结果就不展示了,如果大家想拿我的数据进行测试联系我就好,但是一般情况下在我标注的地方进行相应的修改就好

  • 重命名批处理python脚本

    将Copy of ********.bmp或者Copy of Copy of ********.bmp 此类文件统一命名为********0.bmp 或者********00.bmp等格式,后面的0的个数代表********.bmp出现的次数+1.写了个下面的小脚本: 复制代码 代码如下: import os """ 这个程序是用来将文件名改名,因为在文件夹里面有很多Copy of 重文件名,因此去掉windows 重命名风格而换用新的累加命名机制 作者:chenxofHit

  • Python文件夹批处理操作代码实例

    如图所示,有一个test文件夹,里面有3个子文件夹,每个子文件夹中有若干图片文件 #场景1 读取一个文件夹中所有文件,存入到一个list表中 #coding:utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function import numpy as np import os import sys import math impo

  • Python批处理更改文件名os.rename的方法

    在工作中,我们经常会遇到需要对大批量文件进行重命名的操作,而python提供了很简单的方法: import os #top是目标文件夹(绝对路径),os.walk会读取其内的文件及文件夹直至空. for a,b,c in os.walk(top='dir'): n = len(c) #对文件大小进行过滤 if n >= 10: for i in range(n): #根据命名规则进行匹配分割,eg: 4399_0_1234_60.jpg name = c[i].split('_',1)[1] #

  • Python批处理删除和重命名文件夹的实例

    1. 删除当前目录下不含有指定文件类型的文件夹 #!/usr/bin/python # -*- coding: UTF-8 -*- import sys import os import shutil pwd = os.getcwd() L = os.listdir(".") f = open("out.txt", "w") for dirname in L: if os.path.isdir(dirname): print("dir

  • python实现批处理文件

    Windows下的bat, linux 下的shell 用来做批处理都很好用,可惜不通用 用 Python 来做就简单多了,不过一条条写代码来调用系统命令也够烦的了 程序员都很懒, 不愿做机械无谓的重复性工作, 干脆自己实现一个. 用法超级简单, 默认会执行一个自定义的 batch.json, 按顺序一条条执行其中的步骤 {"steps": [ {"step":"df -h","desc":"display disk

  • Python引用模块和查找模块路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块):对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是.py文件可以认为是一个模块.在"模块"之上有"包",主要是

  • python 提取文件的小程序

    以前提取这些文件用的是一同事些的批处理文件:用起来不怎么顺手,刚好最近在学些python,所有就自己动手写了一个python提取文件的小程序:1.原理 提取文件的原理很简单,就是到一个指定的目录,找出最后修改时间大于给定时间的文件,然后将他们复制到目标目录,目标目录的结构必须和原始目录一致,这样工程人员拿到后就可以直接覆盖整个目录: 2.实现 为了程序的通用,我定义了下面的配置文件 config.xml 复制代码 代码如下: <?xml version="1.0" encodin

  • python批量生成本地ip地址的方法

    本文实例讲述了python批量生成本地ip地址的方法.分享给大家供大家参考.具体分析如下: 这段代码用于在本地计算机上生成本地ip地址绑定到网卡,生成的是一个bat的批处理文件,运行此批处理文件,可以通过ipconfig查看 #!/usr/bin/python2.7 # -*- coding: utf-8 -*- # Filename: AddIPAliases.py import re,sys,socket,struct # 1. 判断IP地址是否合法: 2. 判断用户输入的IP是否在Clas

  • 实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250

    安装部署Scrapy 在安装Scrapy前首先需要确定的是已经安装好了Python(目前Scrapy支持Python2.5,Python2.6和Python2.7).官方文档中介绍了三种方法进行安装,我采用的是使用 easy_install 进行安装,首先是下载Windows版本的setuptools(下载地址:http://pypi.python.org/pypi/setuptools),下载完后一路NEXT就可以了. 安装完setuptool以后.执行CMD,然后运行一下命令: easy_i

  • Python fileinput模块使用实例

    fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作. 该模块的input()函数有点类似文件readlines()方法,区别在于: 前者是一个迭代对象,即每次只生成一行,需要用for循环迭代. 后者是一次性读取所有行.在碰到大文件的读取时,前者无疑效率更高效. 用fileinput对文件进行循环遍历,格式化输出,查找.替换等操作,非常方便. [典型用法] 复制代码 代码如下: import fileinput for line in fileinput.input():   

  • Python文件右键找不到IDLE打开项解决办法

    经常会碰到,双击.py文件运行不了,或右键没有IDLE编辑的项,在WIN7系统中比较常见. 双击*.py文件运行不了解决办法: 右键点击 -> 打开方式 -> 选择默认程序 -> 浏览,找到并选择python.exe 右键没有IDLE项解决办法: 1. 如果PYTHON环境搭建不久,PYTHONPATH,及Lib/site-packages目录下也没有多少库文件时,可以重装 2. 修改注册表,    i. 通过regedit命令来修改注册表 复制代码 代码如下: [HKEY_CLASSE

  • Python语言编写电脑时间自动同步小工具

    话不多说,小工具需求如下: 功能需求 -- 电脑开机后自动执行时间同步 非功能需求 -- 安装执行简单,无需安装额外环境 一.代码实现 基于以上需求,思路如下:访问网络获取北京时间,然后调用命令行来设置系统时间.程序写成Windows Service,并设置为开机自动运行.正好前段时间在学习Python,所以打算用Python来写这个工具.具体代码如下: 获取网络时间 复制代码 代码如下: def getBeijinTime():     """  获取北京时间     &q

  • python安装教程

    根据"廖雪峰"的教程进行python学习,计划每天抽出1-2个小时的时间进行充电. Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. python安装: 1.下载python,版本号3.6以上,本次学习使用3.6.3,操作系统winduws7 64位 2.安装步骤: 1)选中"Add Python 3.6 to PATH",进行安装 2)安装过程如下: 3)安装成功:

随机推荐