我对python的了解相当有限,所以我可能只是在摸爬滚打。
我试图做的是打开一个文件,在里面写一些东西,然后关闭它。
我的问题是,如果那个文件被打开了怎么办?
为了满足我的需要,它需要关闭,不管它发生了什么,所以我可以通过python应用程序打开它。
所以如果我无法打开一个打开的文件,我可以尝试强制关闭它,然后通过Python打开它?
找到此库:https://psutil.readthedocs.io/en/latest/
它有点像我想要的,也许我只是忘了怎么做。
它当前返回所有进程的列表,并给出我可以用来终止进程的ID.(find_procs_by_name,kill_proc_tree)
实际上,我想关闭excel中打开的test.csv,而不是关闭所有excel,有什么想法可以实现这一点吗?
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所说的杀死它。
问候!