2014-09-04 108 views
1

我小白的问题是:我需要通过cmd.exe的如何在一定的情况下在python终止进程

os.system("cmd.exe /c dir > output.txt") 

运行过程(如目录),但我不想等待这个动作来完成,我需要以某种方式终止它(它会持续太久,我需要的东西是在开始时完成的) 我希望我的问题很清楚。

请帮帮忙,我已经遇到了好几个小时

编辑:整体解决方案应放置一个python脚本

+1

这是2014年。您应该使用'subprocess'模块 – goncalopp 2014-09-04 11:26:13

+0

您的'cmd.exe'是否是异步的? – Zulu 2014-09-04 11:29:11

回答

1

内这应该10秒

import time, subprocess 
task = subprocess.Popen(["command"]) 
time.sleep(10) 
task.kill() 

如果杀后任务你正在尝试获取C:\ windows下的文件/文件夹列表,这里有另一种方法:

import os 
with open("output.txt","w") as f: 
    f.write("\n".join(os.listdir("C:\\"))) 
+0

这不起作用,因为脚本不会走得更远,直到“命令”完成 – pawel3ala 2014-09-04 12:47:36

+0

@ pawel3ala,你确定吗?因为,我已经测试过它,它的工作原理 – 2014-09-04 12:49:29

+0

@ pawel3ala:'Popen'是非阻塞的。 – 2014-09-04 12:57:55

1

捕获进程的PID,然后根据需要杀死它。例如:

import os 
import signal 

pid = os.spawnlp(os.P_NOWAIT, 'echo foo') 
os.kill(pid, signal.SIGTERM) 
+0

我的os模块没有spawnlp ... – pawel3ala 2014-09-04 13:17:23

相关问题