我正在处理一个需要我使用psutil
的项目,我试图将一些值与.txt
文件的值进行比较,但出于某种原因,每当我在if语句外部调用psutil.Procces.exe()
方法时,它最终会出现访问被拒绝的异常,让我告诉您我的意思:
import psutil
import time
ini = 'start'
def getTaskList():
list_of_ran_proccesses = []
for procs in psutil.process_iter():
list_of_ran_proccesses.append(procs)
return list_of_ran_proccesses
def CompareRunningFiles():
if ini == "start":
list_of_old_procs = getTaskList()
while list_of_old_procs == getTaskList():
time.sleep(0.01)
for new_procs in psutil.process_iter():
if not new_procs in list_of_old_procs:
print(new_procs.exe())
CompareRunningFiles()
这个例子非常好,但是如果我这样做
import psutil
import time
ini = 'start'
def getTaskList():
list_of_ran_proccesses = []
for procs in psutil.process_iter():
list_of_ran_proccesses.append(procs)
return list_of_ran_proccesses
def CompareRunningFiles():
if ini == "start":
list_of_old_procs = getTaskList()
while list_of_old_procs == getTaskList():
time.sleep(0.01)
for new_procs in psutil.process_iter():
print(new_procs.exe())
CompareRunningFiles()
由于某种原因,这会导致访问被拒绝异常。 谢谢你的回答:)
编辑:我不确定,但这可能是因为模块试图访问一些受保护的目录吗
因为在if语句之后,它只会尝试获取启动的任何进程的目录,而在没有if语句的情况下,它会尝试访问所有正在运行的进程
因此,当它遇到一个系统进程时,它也会尝试获取它的目录,如果进程在一个受保护的目录中运行,它会引发一个拒绝访问的异常
基本上,if语句阻止程序尝试获取某些系统进程的目录(它们始终处于打开状态),Windows中的某些目录受到保护,无法直接访问,如果没有if语句,模块将尝试获取所有正在运行的进程的目录,这将导致在尝试从受保护目录(例如:系统空闲进程)运行的进程获取目录时出现异常,使用(正如Omer所说的)“try:…psutil.AccessDenied:pass除外”将跳过这些过程并防止此问题。谢谢奥马尔的解释,谢谢你的三倍:D
相关问题 更多 >
编程相关推荐