1 #-*-coding:utf8-*-
2 import os
3 import subprocess
4 import shutil
5 import psutil
6 import time
7
8
9 #查找指定文件名称和查找范围的文件路径
10 def search(name, path):
11 name = name.lower()
12 for root,dirs,files in os.walk(path):
13 for file in files+dirs:
14 if name in file.lower():
15 return os.path.join(root,file)
16 return -1
17
18 #修改do文件内容
19 def do(in_file):
20 w = ''
21 for line in open('sort.do','r').readlines():
22 if 'foreach' in line:
23 ceil = line.split(" ")
24 ceil[len(ceil)-1] = '"'+in_file+'"{\n'
25 w = ""
26 for i in ceil:
27 w = w + i + ' '
28 else:
29 w += line
30
31 with open('sort.do','wb') as writer:
32 writer.write(w)
33
34 #运行指定的其他类型的程序,如do文件
35 def run_do(do_file,in_file):
36
37 do(in_file)
38
39 # 查找windows所有盘符名称
40 information = os.popen("wmic LOGICALDISK get name").read().split("\r\n")
41 code = []
42 for inform in information:
43 if ':' in inform:
44 code.append(inform.strip())
45 print code
46
47 # 遍历所有盘符,直到找到StataMP-64.exe文件
48 for path in code:
49 stata_path = search('StataMP-64.exe', path + '\\')
50 if stata_path != -1:
51 break
52 print stata_path
53
54 if os.path.exists('20140803'):
55 pass
56 print '已存在'
57 else:
58 do_file = os.path.abspath(do_file + '.do')
59 cmd = [stata_path,'do',do_file]
60 child = subprocess.Popen(cmd)
61 #找出本机逻辑核个数
62 cpu_count = psutil.cpu_count()
63 while True:
64 time.sleep(5)
65 # 传入进程PID,实现监控功能
66 cpu_percent = psutil.Process(child.pid).cpu_percent(interval=2)
67 percent = cpu_percent/cpu_count
68 print cpu_count,cpu_percent,percent
69 if percent == 0:
70 child.kill()
71 print 'Success'
72 break
73
74 if __name__ == '__main__':
75
76 run_do('sort')