【问题标题】:Code works but I get No such element error after executing代码有效,但执行后我得到 No such element 错误
【发布时间】:2021-12-13 02:07:55
【问题描述】:

我正在使用 for 循环重复一项任务,该任务基本上删除了我的活动 Illustrator 文档中的特定对象。代码可以运行,但是当它结束时出现错误,我无法执行其余代码。

我的代码:

def top_file():
    for y in range(1, pathCount + 1):
        path_items = activeDoc.PathItems(y).Filled
        if path_items is False:
            path_items = activeDoc.PathItems(y)
            path_items.Delete()

这是我得到的错误:

Traceback (most recent call last):
  File "C:\Users\joelq\Desktop\Joy Automation\main.py", line 88, in <module>
    top_file()
  File "C:\Users\joelq\Desktop\Joy Automation\main.py", line 61, in top_file
    path_items = activeDoc.PathItems(y).Filled
  File "C:\Users\joelq\AppData\Local\Programs\Python\Python39\lib\site-packages\win32com\client\dynamic.py", line 226, in __call__
    self._oleobj_.Invoke(*allArgs), self._olerepr_.defaultDispatchName, None
pywintypes.com_error: (-2147352567, 'Ocurrió una excepción.', (0, 'Adobe Illustrator', 'No such element', None, 0, -2147352565), None)

【问题讨论】:

    标签: python pywin32 win32com


    【解决方案1】:

    从错误消息中应该很清楚。 Illustrator 对象模型中的集合从 0 开始编号,就像 Python 列表一样。使用range(pathCount)

    但是请注意,您正在做的事情稍后会失败。如果您在迭代集合时 Delete 集合中的一个项目,则计数将是错误的。如果您删除第 3 项,那么第 4 项将变为第 3 项,并且项目的数量会发生变化,因此您的 range 将被用完。您可能需要从末尾向后迭代。

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 2021-11-17
      • 2018-04-19
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      相关资源
      最近更新 更多