代码有效,但执行后出现 No such element 错误

Code works but I get No such element error after executing

我正在使用 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)

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

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