提问者:小点点

通过python杀死进程


我对python的了解相当有限,所以我可能只是在摸爬滚打。

我试图做的是打开一个文件,在里面写一些东西,然后关闭它。

我的问题是,如果那个文件被打开了怎么办?

为了满足我的需要,它需要关闭,不管它发生了什么,所以我可以通过python应用程序打开它。

所以如果我无法打开一个打开的文件,我可以尝试强制关闭它,然后通过Python打开它?

找到此库:https://psutil.readthedocs.io/en/latest/

它有点像我想要的,也许我只是忘了怎么做。

它当前返回所有进程的列表,并给出我可以用来终止进程的ID.(find_procs_by_name,kill_proc_tree)

实际上,我想关闭excel中打开的test.csv,而不是关闭所有excel,有什么想法可以实现这一点吗?


共2个答案

匿名用户

kill()方法将向进程PID发送信号sig。 主机平台上可用的特定信号的常量在信号模块中定义。 您可以从以下站点了解更多关于python OS模块的信息:https://docs.python.org/3/library/OS.html。 它有很多控制计算机的方法。

# Python program to explain os.kill() method  

# importing os and signal module   
import os, signal 

# Create a child process 
# using os.fork() method  
pid = os.fork() 


# pid greater than 0 
# indicates the parent process  
if pid : 



   print("\nIn parent process") 

   # send signal 'SIGSTOP' 
   # to the child process 
   # using os.kill() method 
   # 'SIGSTOP' signal will 
   # cause the process to stop 
   os.kill(pid, signal.SIGSTOP) 

   print("Signal sent, child stopped.") 



   info = os.waitpid(pid, os.WSTOPPED) 
   # waitpid() method returns a 
   # tuple whose first attribute  
   # represents child's pid 
   # and second attribute 
   # represnting child's status indication   

   # os.WSTOPSIG() returns the signal number 
   # which caused the process to stop 
   stopSignal = os.WSTOPSIG(info[1]) 
   print("Child stopped due to signal no:", stopSignal) 
   print("Signal name:", signal.Signals(stopSignal).name) 


    # send signal 'SIGCONT' 
    # to the child process 
    # using os.kill() method 
    # 'SIGCONT' signal will 
    # cause the process to continue 
    os.kill(pid, signal.SIGCONT)  
    print("\nSignal sent, child continued.") 


else : 

    print("\nIn child process") 
    print("Process ID:", os.getpid()) 
    print("Hello ! Geeks") 
    print("Exiting") 

匿名用户

您可以像使用shell命令一样使用pgrep

https://pypi.org/project/pgrep/

通过条件获取您的ID,然后按Andrew所说的杀死它。

问候!