通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

python如何获取电脑打开了那些软件

python如何获取电脑打开了那些软件

Python获取电脑上打开的软件的方法有:使用psutil库、使用subprocess模块、使用WMI模块、使用pywin32库。 其中,psutil库是一种非常流行和便捷的方法,因为它提供了跨平台的接口,可以轻松获取系统的进程信息。

要详细描述如何使用psutil库来获取电脑上打开的软件,可以按照以下步骤进行:

一、安装psutil库

首先,确保你已经安装了psutil库。如果没有安装,可以通过pip进行安装:

pip install psutil

二、使用psutil库获取进程信息

psutil库提供了多种方法来获取系统中的进程信息。我们可以使用psutil.process_iter()来迭代系统中的所有进程,并获取每个进程的详细信息。

import psutil

def get_opened_software():

software_list = []

for process in psutil.process_iter(['pid', 'name', 'username']):

software_info = {

'pid': process.info['pid'],

'name': process.info['name'],

'username': process.info['username']

}

software_list.append(software_info)

return software_list

if __name__ == "__main__":

opened_software = get_opened_software()

for software in opened_software:

print(f"PID: {software['pid']}, Name: {software['name']}, User: {software['username']}")

三、使用psutil库进行更详细的信息获取

如果需要获取更多的进程信息,比如进程的内存使用、CPU使用等,也可以通过psutil库来实现。

import psutil

def get_detailed_software_info():

software_list = []

for process in psutil.process_iter(['pid', 'name', 'username', 'memory_info', 'cpu_percent']):

software_info = {

'pid': process.info['pid'],

'name': process.info['name'],

'username': process.info['username'],

'memory_usage': process.info['memory_info'].rss, # 内存使用

'cpu_usage': process.info['cpu_percent'] # CPU使用率

}

software_list.append(software_info)

return software_list

if __name__ == "__main__":

detailed_software = get_detailed_software_info()

for software in detailed_software:

print(f"PID: {software['pid']}, Name: {software['name']}, User: {software['username']}, Memory: {software['memory_usage']} bytes, CPU: {software['cpu_usage']}%")

四、使用subprocess模块获取进程信息

除了psutil库,还可以使用subprocess模块来获取系统进程信息。可以通过执行系统命令,如Windows上的tasklist或Linux上的ps命令,来获取进程列表。

import subprocess

def get_opened_software_subprocess():

if os.name == 'nt': # Windows系统

command = 'tasklist'

else: # Linux/Unix系统

command = 'ps -aux'

process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

stdout, stderr = process.communicate()

if process.returncode == 0:

output = stdout.decode()

print(output)

else:

print(f"Error: {stderr.decode()}")

if __name__ == "__main__":

get_opened_software_subprocess()

五、使用WMI模块获取进程信息(Windows)

在Windows系统上,可以使用WMI模块来获取进程信息。需要先安装WMI模块:

pip install WMI

import wmi

def get_opened_software_wmi():

c = wmi.WMI()

for process in c.Win32_Process():

print(f"PID: {process.ProcessId}, Name: {process.Name}, User: {process.GetOwner()[0]}")

if __name__ == "__main__":

get_opened_software_wmi()

六、使用pywin32库获取进程信息(Windows)

在Windows系统上,还可以使用pywin32库来获取进程信息。需要先安装pywin32库:

pip install pywin32

import win32pdh

def get_opened_software_pywin32():

process_list = []

win32pdh.EnumObjects(None, None, win32pdh.PERF_DETAIL_WIZARD)

process_ids = win32pdh.EnumObjectItems(None, None, 'Process', win32pdh.PERF_DETAIL_WIZARD)[0]

for process_id in process_ids:

process_details = win32pdh.EnumObjectItems(None, None, process_id, win32pdh.PERF_DETAIL_WIZARD)[1]

for detail in process_details:

process_list.append(detail)

return process_list

if __name__ == "__main__":

opened_software = get_opened_software_pywin32()

for software in opened_software:

print(software)

七、总结

通过使用psutil库、subprocess模块、WMI模块和pywin32库,可以在Python中获取电脑上打开的软件信息。psutil库是最推荐的方法,因为它不仅简单易用,还能提供跨平台的兼容性,并且可以获取丰富的进程信息。对于Windows系统用户,WMI模块和pywin32库也是非常有用的工具。

在实际开发中,选择哪种方法可以根据具体需求和运行环境来决定。通过这些方法,可以轻松获取电脑上打开的软件信息,并进行进一步的处理和分析。

相关问答FAQs:

如何使用Python获取当前运行的程序列表?
要获取当前运行的程序列表,可以使用psutil库。该库提供了一个简单的方法来访问系统和进程信息。你可以通过以下代码获取所有正在运行的进程及其名称:

import psutil

for proc in psutil.process_iter(['pid', 'name']):
    print(proc.info)

此代码片段会输出每个进程的ID和名称,便于你查看哪些程序正在运行。

使用Python获取软件的更多信息是否可行?
是的,使用psutil库,你不仅可以获取进程名称,还可以获取其他相关信息,例如CPU使用率、内存使用情况等。你可以这样扩展你的代码:

for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_info']):
    print(proc.info)

这将提供每个进程的CPU占用率和内存使用情况,帮助你更全面地了解系统负载。

是否可以过滤特定类型的软件或进程?
当然可以。通过对获取的进程列表进行条件筛选,你可以只显示特定类型的软件。例如,如果你只想查看以“python”开头的程序,可以使用如下代码:

for proc in psutil.process_iter(['pid', 'name']):
    if proc.info['name'].startswith('python'):
        print(proc.info)

这样,输出的将仅包含与“python”相关的进程,满足特定需求。

相关文章