我目前想知道如何在python中列出win32com中的常量,
例如使用excel win32com.client.Dispatch('Excel.Application')
有没有办法使用win32com.client.Constants显示所有常量?
或者有人知道我在哪里可以找到win32com的文档吗?因为我找到的所有链接都已经死了......
答案 0 :(得分:1)
要了解您可以使用哪些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接口提供某种形式的文档,以便能够对程序做任何有意义的事情(除了打开它)。
答案 1 :(得分:0)
@CastleH在评论中给出的答案向我指出了正确的方向:help()
帮助了我很多,但你必须在模块级别使用它!
例如,
import win32print
help(win32print)
为你提供win32print中的所有常量。您可以对win32com中的每个模块执行相同的操作(有关模块的完整列表,请参阅win32com documentation, section modules)。
使用help(win32com)
对我没什么帮助,因为它主要列出了包
答案 2 :(得分:0)
要列出可用的常量,可以执行以下操作:
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
的最佳资源是source code 1 ,尤其是在2020年(创建16年后)。
事实证明,win32com.client.constants
是Constants
class的一个实例:
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存档的Wayback Machine。有用于各种浏览器的插件,可轻松或自动搜索页面的存档版本。