Python-使用psutil查找PID函数-不返回任何内容

Python-使用psutil查找PID函数-不返回任何内容,python,psutil,Python,Psutil,我有一个函数,它应该使用psutil返回给定进程的进程ID,但由于某些原因,它不返回任何内容 打印所需变量将显示正确的值。我想我做错了什么 def pid_find(process_name): pid = [] for proc in psutil.process_iter(): try: if proc.name() == process_name: pid.append(proc.pid) except psutil.

我有一个函数,它应该使用psutil返回给定进程的进程ID,但由于某些原因,它不返回任何内容

打印所需变量将显示正确的值。我想我做错了什么

def pid_find(process_name):
   pid = []
   for proc in psutil.process_iter():
     try:
        if proc.name() == process_name:
            pid.append(proc.pid)
     except psutil.AccessDenied:
        pass
   try:
     process = pid[0]
   except IndexError:
     raise Exception("Process %s not found" % process_name)
   print process # prints the correct value
   return process # does not return anything

如果有适当的缩进,应该是这样的-

def pid_find(process_name):
    pid = []
    for proc in psutil.process_iter():
        try:
            if proc.name() == process_name:
                pid.append(proc.pid)
        except psutil.AccessDenied:
            pass
    try:
        process = pid[0]
    except IndexError:
        raise Exception("Process %s not found" % process_name)
    print process #prints the correct value
    return process # return value

可以使用wmi查询而无需迭代:


我只是试着测试你的代码。它是有效的,除了这个:

if proc.name() == process_name:
必须替换为:

if proc.name == process_name:
通过一些简化,但以您的代码精神:

   import psutil

   def pid_find(process_name):
      for proc in psutil.process_iter():
        try:
           if proc.name == process_name:
              return proc.pid
        except psutil.AccessDenied:
           pass
      raise Exception("Process %s not found" % process_name)

   print pid_find("bash")

我想我发现了问题所在。该函数工作正常,但我没有正确调试以检查该函数是否工作:

我就是这样尝试的:


函数位于functions.py文件中 我是这样调用test.py文件中的函数的:

import functions
def debug
   functions.pid_find("chrome.exe) 

if __name__ == "__main__":
    debug()
但如果我将函数放入变量中,我应该能够存储结果并进一步使用它:


检查您是否使用了正确的缩进……是的,这就是我在机器上使用的缩进。我是这个网站的新手,我还在学习正确的格式。sorryFunction位于functions.py文件中。这是我从文件test.py调用它的方式:import functions.pid\u findchrome.exe
import functions
def debug
   functions.pid_find("chrome.exe) 

if __name__ == "__main__":
    debug()
import functions
def debug(proc):
    pid = functions.pid_find(proc)
    print pid #shows that pid has the correct value