python 일괄 처리 파일 구현
윈도 우즈 의 bat,linux 의 셸 은 일괄 처리 에 사용 하기 가 매우 좋 지만,아 쉽게 도 통용 되 지 않 는 다
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
---------------------------".format(json_file)
json_data=open(json_file)
data = json.load(json_data)
cnt = len(data['steps'])
i = 0
print "
## Will execute {0} steps
~~~~~~~~~~~~~~~~~~~~~~~~~~~".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 "
* {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 "
## Done the following steps
~~~~~~~~~~~~~~~~~~~~~~~~~~~"
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)
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.