如何查找Python模块的属性和方法等

52 投票
4 回答
108100 浏览
提问于 2025-04-16 12:27

假设我导入了一个模块。为了能更好地使用它,我想知道有哪些属性、方法等等可以用。有没有办法可以找到这些信息呢?

举个例子:在Python中确定正在运行的程序

在这一行:

os.system('WMIC /OUTPUT:C:\ProcessList.txt PROCESS get Caption,Commandline,Processid')

假设我还想打印出这些进程占用的内存。我该怎么知道这是否可行?那它的正确“标签”是什么呢?(就像作者使用的“Commandline”、“ProcessId”一样)

同样,在这个:

import win32com.client
def find_process(name):
    objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
    objSWbemServices = objWMIService.ConnectServer(".", "root\cimv2")
    colItems = objSWbemServices.ExecQuery(
         "Select * from Win32_Process where Caption = '{0}'".format(name))
    return len(colItems)

print find_process("SciTE.exe")

我该怎么让这个函数也打印出占用的内存、可执行路径等等呢?

4 个回答

4

Python 有一个内置的函数叫做 dir()。我不确定你是不是在说这个,但你可以打开一个交互式的 Python 控制台,然后输入:

import datetime
dir(datetime)

这样做会给你一个方法、属性和子模块的列表。

22

dir(module) 会返回这个模块里所有属性的名字。

module.__dict__ 是一个字典,它把属性的名字和实际的属性对象联系起来。

module.__dict__.keys()dir(module) 这两个都是包含相同元素的列表,但它们不完全相同,因为里面的元素顺序不一样。

看起来你真正需要的是 help(module)

74

关于Python模块,你可以这样做:

>>> import module
>>> help(module)

这样你就能得到一个支持的方法列表(更准确地说,你会得到文档字符串,但这可能不包含每一个方法)。如果你想要更详细的信息,可以使用:

>>> dir(module)

不过这样你会得到这个模块中所有属性、方法、类等的长长一串列表。

在你第一个例子中,你其实是在调用一个外部程序。当然,Python并不知道wmic.exe有哪些功能。它怎么会知道呢?

撰写回答