python实现批处理文件

时间:2021-05-22

本文实例为大家分享了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.pyUsage: 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 usage1. [date]: display the current dater2. [time]: display the current time* 0. [df -h]: display disk space usageFilesystem 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 daterThu Mar 3 22:50:21 CST 2016* 2. [time]: display the current timereal 0m0.001suser 0m0.000ssys 0m0.000s## Done the following steps~~~~~~~~~~~~~~~~~~~~~~~~~~~0. [df -h]: display disk space usage1. [date]: display the current dater# Execute batch.json end.

Python源代码如下, 希望有人能用得上

''' like bat file, execute the steps in batch.json '''import os,sys,subprocessimport time,threadimport codecsimport jsonfrom datetime import datetimefrom subprocess import callfrom pprint import pprintdef 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)

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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章