- 论坛徽章:
- 0
|
本帖最后由 c386 于 2014-06-21 15:32 编辑
写了一个抓Windows进程的脚本
首先使用tasklist命令列出所有Windows进程并read到list里
然后遍历列表list元素,如果有元素字段内包含"Proxy.exe"字段,则把该字段和时间一起记录到d:\ProxyLog.txt中
现在问题是,当list中没有该匹配字段时,程序会报错,而且没有任何记录
自己查了半天,也找不出个为什么。
各位大大帮忙看一下,这个脚本到底是哪里出了问题呢?
import os,sys,time
PROCESSNAME="ProxyLog.exe"
f=file(r'd:\ProxyLog.txt','a+')
def getallporcesses():
command = 'tasklist'
list=os.popen(command).read().split('\n')
return list
def getprocess(list):
NOW=time.strftime('%Y-%m-%d_%H:%M:%S',time.localtime(time.time()))
try:
for v in range(0,len(list)):
if PROCESSNAME in list[v]:
log = NOW+' '+list[v]+'\n'
f.write(log)
break
except:
log = ' No process\n'
f.write(log)
finally:
print log
f.flush()
def main():
while(1):
getprocess(getallporcesses())
time.sleep(10)
if __name__ == "__main__":
main()
多谢大家指点!
问题就出在异常处理上。
循环没有匹配到结果也是正常状态,并不能当做异常来处理。这里是自己理解有问题,汗一个。
实现代码:
import os,sys,time
PROCESSNAME="cmd.exe" #要捕获的进程名
f=file(r'd:\ProxyLog.txt','a+') #要写入的文件
def getallporcesses():
command = 'tasklist'
list=os.popen(command).read().split('\n')
return list
def getprocess(list):
NOW=time.strftime('%Y-%m-%d_%H:%M:%S',time.localtime(time.time()))
for v in range(0,len(list)):
pos=-1
if PROCESSNAME in list[v]:
log = NOW+' '+list[v]+'\n'
f.write(log)
pos=v
break;
else:
pass;
if ( pos==-1):
log = NOW+' No Process!\n'
f.write(log)
def main():
while(1):
getprocess(getallporcesses())
f.flush()
time.sleep(10)
if __name__ == "__main__":
main()
|
|