Python中如何在Windows7下杀死进程

我想用 Python 卸载一个软件,删除文件夹的过程中发现有几个 Python 程序正在占用这个文件夹,我想先杀死进程

找到 PID,也执行了 kill 进程的命令

os.kill(pid, signal.SIGTERM)

我得到了没有权限的错误提示

我是用管理员权限的 CMD 运行的命令

我还用 tkinter 做了个界面,pyinstaller 打包成 exe 可执行程序,右键管理员身份运行

可是还是不能杀死进程

请问该如何有权限杀死进程,先谢谢了


Python中如何在Windows7下杀死进程

9 回复

ntsd


在Windows 7下用Python杀进程,可以用psutil库,比内置的os.kill更省事。先装库:pip install psutil

最直接的方法是靠进程名来杀。比如要干掉所有叫notepad.exe的记事本:

import psutil

def kill_process_by_name(process_name):
    for proc in psutil.process_iter(['pid', 'name']):
        if proc.info['name'] == process_name:
            try:
                proc.kill()
                print(f"已终止进程 {process_name} (PID: {proc.info['pid']})")
            except psutil.NoSuchProcess:
                print(f"进程 {process_name} (PID: {proc.info['pid']}) 已不存在")
            except psutil.AccessDenied:
                print(f"无权限终止进程 {process_name} (PID: {proc.info['pid']})")

# 使用示例
kill_process_by_name('notepad.exe')

如果知道具体的进程ID(PID),那就更简单了:

import psutil

def kill_process_by_pid(pid):
    try:
        proc = psutil.Process(pid)
        proc.kill()
        print(f"已终止进程 (PID: {pid})")
    except psutil.NoSuchProcess:
        print(f"进程 (PID: {pid}) 不存在")
    except psutil.AccessDenied:
        print(f"无权限终止进程 (PID: {pid})")

# 使用示例
kill_process_by_pid(1234)  # 替换成你要杀的PID

proc.kill()是强制终止,相当于任务管理器的“结束进程”。如果想温和点,用proc.terminate()试试正常退出,不行再上kill

注意杀系统进程或没权限的进程会抛AccessDenied,编程时最好用try-except包起来。

总结:用psutil按名字或PID杀进程最靠谱。

哦,用 python 杀?那就不知道了。也可以用 python 调用 command 命令杀。

os.system(‘kill -ID <pid>’), 这样???

不清楚你那儿是什么情况,不过os.kill(pid, signal.SIGTERM)在 Python 2.7 之后都会可以用来杀进程的,估计是你要啥的进程权限比较高?或者你的权限比较低?

感谢大家回复,使用 os.system 调用系统命令 taskkill /F /pid 1234 执行成功了

taskkill /f /im 进程名 /t

import subprocess
subprocess.Popen(‘taskkill /F /im chrome.exe’, shell=True,stdout=subprocess.PIPE)

subprocess.Popen(这里直接 kill 可以吗?’, shell=True,stdout=subprocess.PIPE)

回到顶部