我目前想知道如何在python中列出win32com中的常量,
例如使用 excelwin32com.client.Dispatch('Excel.Application')
有没有办法使用 win32com.client.Constants 显示所有常量?
或者有人知道我在哪里可以找到 win32com 的文档吗?因为我找到的所有链接都死了......
要了解您可以使用哪些 Com 应用程序...请参阅http://timgolden.me.uk/pywin32-docs/html/com/win32com/HTML/QuickStartClientCom.html
基本上你无法确定。对不起。根据安装的软件,每台计算机都会有一个不同的列表,我链接的网页建议使用 pyWins ComBrowser,但我从未发现它有用。
我通常的做法是“我想在 Python 中与应用程序 X 交互......让谷歌“python com X”看看会发生什么”或“我想在 Python 中与应用程序 X 交互......让我们看看 AppX 的文档参考 COM'
毕竟,您将希望对该程序的 COM 接口有某种形式的文档,以便能够对程序执行任何有意义的操作(除了打开它)。
@CastleH 在他的评论中给出的答案为我指明了正确的方向:help()
帮助了我很多,但你必须在模块级别使用它!
例如,
import win32print
help(win32print)
为您提供 win32print 中的所有常量。您可以对 win32com 中的每个模块执行相同的操作(有关模块的完整列表,请参见win32com 文档的模块部分)。
使用help(win32com)
对我没有多大帮助,因为它主要是列出包
要列出可用的常量,您可以执行以下操作:
import win32com
for k, v in win32com.client.constants.__dicts__[0].items():
print("{:<45}: {}".format(k, v))
# __module__ : win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x9
# xl3DBar : -4099
# xl3DEffects1 : 13
# xl3DEffects2 : 14
# xl3DSurface : -4103
# ...
pywin32
即使在 2020 年(创建后 16 年以上),最好的资源是源代码1。
原来这win32com.client.constants
是Constants
类的一个实例:
class Constants:
"""A container for generated COM constants.
"""
def __init__(self):
self.__dicts__ = [] # A list of dictionaries
def __getattr__(self, a):
for d in self.__dicts__:
if a in d:
return d[a]
raise AttributeError(a)
# And create an instance.
constants = Constants()
常量都存储在self.__dicts__
其中是字典列表。该列表恰好只包含一个字典。
知道了这一点,您可以遍历字典(如上所述)以查看可用的常量。
1对于死链接,请尝试 Internet Archive 的Wayback Machine。有用于各种浏览器的插件,可以轻松或自动搜索页面的存档版本。