如何使用Python查找正在运行的进程的位置



我需要在我正在制作的程序中找到web浏览器的位置。

我决定通过运行浏览器窗口然后找到它的路径来做到这一点。我看了psutil,但仍然不知道如何做到。

我这样做是因为我似乎无法使用网络浏览器库打开新窗口,无论我告诉它在哪里,它都会在一个新的选项卡中打开。因此,我计划使用此处解释的命令:http://kb.mozillazine.org/Command_line_arguments#List_of_command_line_arguments_.28incomplete.29

我在Windows 10 上使用Python 3.8.6

终于找到了使用psutil的解决方案!

import psutil
def findPath(name):
for pid in psutil.pids():
if psutil.Process(pid).name() == name:
return psutil.Process(pid).exe()
print(findPath('firefox.exe'))

这将遍历所有pid,并检查pid名称是否与传递给findPath函数的名称变量相同。

链接到原始代码(psutil(

我修改了原始代码以满足您的需求。不幸的是,我无法测试它们,因为我在Android平台上,并且TermuxPython中的psutil模块由于安全/隐私原因无法访问(自Android更新以来(统计数据,因此如果它们不起作用,请告诉我

简单方法

import psutil
def findPath(name: str) -> list:
ls: list = [] # since many processes can have same name it's better to make list of them
for p in psutil.process_iter(['name', 'pid']):
if p.info['name'] == name:
ls.append(psutil.Process(p.info['pid']).exe())
return ls

更先进的

import os
import psutil
def findPathAdvanced(name: str) -> list:
ls: list = [] # same reason as previous code
for p in psutil.process_iter(["name", "exe", "cmdline", "pid"]):
if name == p.info['name'] or p.info['exe'] and os.path.basename(p.info['exe']) == name or p.info['cmdline'] and p.info['cmdline'][0] == name:
ls.append(psutil.Process(p.info['pid']).exe())
return ls

最新更新