Python 杀死锁定文件的所有进程

Python 杀死锁定文件的所有进程,python,windows,process,Python,Windows,Process,当我运行Python脚本时,有时会出现以下错误: 进程无法访问该文件,因为该文件正由用户使用 “另一个过程” 现在我想知道:python中有没有一种方法可以: 检测哪个进程正在使用该文件 关闭此进程?(例如使用操作系统('taskkill/f/im PROCESS.exe)) 如果您将所需文件与psutil匹配,您可以尝试迭代进程并终止它: import psutil for p in psutil.process_iter(): try: if "filename" in str(

当我运行Python脚本时,有时会出现以下错误:

进程无法访问该文件,因为该文件正由用户使用 “另一个过程”

现在我想知道:python中有没有一种方法可以:

  • 检测哪个进程正在使用该文件
  • 关闭此进程?(例如使用操作系统('taskkill/f/im PROCESS.exe))

  • 如果您将所需文件与psutil匹配,您可以尝试迭代进程并终止它:

    import psutil
    
    
    for p in psutil.process_iter():
    try:
        if "filename" in str(p.open_files()):
            print(p.name())
            print("^^^^^^^^^^^^^^^^^")
            p.kill()
    except:
        continue
    

    有一个方便的工具。它叫“解锁器”。@Jean Françoisfare你能分享到项目页面的链接吗?我第一眼在Google.french链接上找不到它,但很好:@Jean Françoisfare啊,我明白了。事实上,我正在寻找一种pythonic的方法来完成它,因为我需要自动完成。也许这个工具有一个批处理模式。无论如何,只要锁定的文件是本地文件,并且您正在使用提升的privilegesThanks运行以获取答案,就可以完成此操作。文件名必须是完整路径还是仅是python脚本存储文件夹的相对路径?取决于文件名,如果文件名唯一,则只能使用文件名,否则也可以添加路径(如果名称常用,则可能会杀死其他进程)。这是viber的open file输出示例,它使用完整的文件路径:psutil.Process(pid=12756,name='Viber.exe',started='2019-07-04 10:39:15')[popenfile(path='C:\\Users\\\'user'\\AppData\\Roaming\\ViberPC\\359899180789\\Viber.db-wal'…我明白了。非常感谢!