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”相关的进程,满足特定需求。