代码有效,但执行后出现 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
将在末尾 运行。您可能需要从末尾向后迭代。
我正在使用 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
将在末尾 运行。您可能需要从末尾向后迭代。