让我说我导入一个模块。为了让我充分利用它,我想知道我可以使用哪些属性,方法等。有没有办法找到它?
例如:Determining running programs in 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")
如何使该功能还打印出所消耗的内存,可执行路径等?
答案 0 :(得分:41)
对于Python模块,你可以做
>>> import module
>>> help(module)
并且您将获得支持的方法列表(更准确地说,您获得了docstring,它可能不包含每个方法)。如果你想要,你可以使用
>>> dir(module)
虽然现在你只需要获得该模块中所有属性,方法,类等的长列表。
在你的第一个例子中,你正在调用外部程序。当然,Python不知道wmic.exe
具有哪些功能。应该怎么做?
答案 1 :(得分:11)
dir(module)
返回模块属性的名称
module.__dict__
是键和属性对象本身之间的映射
module.__dict__.keys()
和dir(module)
是具有相同元素的列表,但它们不相等,因为元素的顺序不相同
似乎help(module)
是你真正需要的
答案 2 :(得分:3)
Python有一个名为dir()的内置函数。我不确定这是否是你所指的,但启动一个交互式python控制台并输入:
import datetime
dir(datetime)
这应该为您提供方法,属性和子模块的列表
答案 3 :(得分:2)
@ldmvcd
好的,对不起,我认为你是初学者,而且你没有看到我所指的基本概念。
对象是Python的抽象 数据。 Python程序中的所有数据都是 由对象或关系表示 对象之间。 http://docs.python.org/reference/datamodel.html#the-standard-type-hierarchy
我不明白为什么它被称为“抽象”:对我来说,一个对象是机器中真实存在的东西,是根据某些规则组织的一系列比特来表示概念数据或功能。
名称指的是对象。名字是 通过名称绑定操作引入。 每次出现一个名字 程序文本指的是绑定 这个名字建立在最里面 包含使用的功能块。 http://docs.python.org/reference/executionmodel.html#naming-and-binding
命名空间是从名称到的映射 对象。 目前大多数命名空间 实现为Python词典, 但这通常不会引起注意 任何方式(表演除外),和 它可能会在未来发生变化。例子 命名空间是:内置的集合 名称(包含诸如的函数) abs()和内置异常名称); 模块中的全局名称;和 函数调用中的本地名称。 从某种意义上说,一组属性 对象也形成一个命名空间。 http://docs.python.org/tutorial/classes.html#a-word-about-names-and-objects
顺便说一下,我使用了word属性 对于点后面的任何名称 - for 例如,在表达式z.real中, real是对象z的属性。 严格地说,引用名称 在模块中是属性引用: 在表达式modname.funcname中, modname是一个模块对象和 funcname是它的一个属性。在 这种情况恰好有一个 直截了当的映射 模块的属性和全局 模块中定义的名称:它们 共享相同的命名空间! http://docs.python.org/tutorial/classes.html#a-word-about-names-and-objects
命名空间是在不同的位置创建的 时刻,有不同的生命。 http://docs.python.org/tutorial/classes.html#a-word-about-names-and-objects
模块的命名空间是 第一次自动创建了 模块已导入。主要模块 始终调用脚本 主要即可。 http://docs.python.org/reference/executionmodel.html#naming-and-binding
嗯,Python程序是一个很大的机器,可以使用对象,对这些对象的引用,这些对象的名称,以及名称和对象绑定的名称空间,名称空间被实现为字典。
所以,你是对的:当我提到密钥时,我将名称称为不同命名空间中的密钥。名称是任意的或不是,根据它们创建的对象是用户的对象还是内置对象。
我建议你仔细阅读部分
<强> 3.1。对象,值和类型 http://docs.python.org/reference/datamodel.html#the-standard-type-hierarchy
和
<强> 4.1。命名和绑定 http://docs.python.org/reference/executionmodel.html#naming-and-binding