2014-09-04 92 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

相關問題