我是python pptx库的新手,我的问题是:如何使用Python库pptx定义现有演示文稿中每个pptx幻灯片的形状列表,形状编号/索引(shapetree)和形状类型?我想更新一个现有的ppt演示文稿,看来第一步将是在每张幻灯片上定位确切的形状标识符,以使用更新来访问它们。您能否指出现有解决方案或示例?
答案 0 :(得分:1)
我认为“定义”是指“发现”之类的东西,因为通常没有充分的理由来更改现有值。
一个好的开始方法是遍历并打印一些属性:
prs = Presentation("my-deck.pptx")
for slide in prs.slides:
for shape in prs.shapes:
print("id: %s, type: %s" % (shape.shape_id, shape.shape_type))
您可以使用以下API文档中列出的任何幻灯片和/或形状属性来获得所需的详细说明:
https://python-pptx.readthedocs.io/en/latest/api/shapes.html#shape-objects-in-general
要通过ID(或名称)查找形状,您需要以下代码:
def find_shape_by_id(shapes, shape_id):
"""Return shape by shape_id."""
for shape in shapes:
if shape.shape_id == shape_id:
return shape
return None
或者如果您做很多事情,可以使用dict
来完成该工作:
shapes_by_id = dict((s.shape_id, s) for s in shapes)
然后为您提供所有方便的方法,例如:
>>> 7 in shapes_by_id
True
>>> shapes_by_id[7]
<pptx.shapes.Shape object at 0x...>