使用python pptx删除PowerPoint中的超链接

使用python pptx删除PowerPoint中的超链接,python,powerpoint,python-pptx,Python,Powerpoint,Python Pptx,对于XML和python pptx模块来说,这是一个全新的概念,我想删除每个页面上存在的单个超链接 到目前为止,我自己的尝试是检索我的文件,更改为zip格式,并将它们解压缩到单独的文件夹中 然后我找到以下属性 并在删除与此幻灯片对应的xml.rels文件中的关系属性的同时将其删除 然后我重新压缩并将扩展名更改为pptx,这将加载罚款。然后我尝试在Python中复制它,这样我就可以创建一个正在进行的自动化 我的尝试: from pathlib import Path import zipfile

对于XML和python pptx模块来说,这是一个全新的概念,我想删除每个页面上存在的单个超链接

到目前为止,我自己的尝试是检索我的文件,更改为
zip
格式,并将它们解压缩到单独的文件夹中

然后我找到以下属性

并在删除与此幻灯片对应的
xml.rels
文件中的
关系
属性的同时将其删除

然后我重新压缩并将扩展名更改为pptx,这将加载罚款。然后我尝试在Python中复制它,这样我就可以创建一个正在进行的自动化

我的尝试:

from pathlib import Path
import zipfile as zf
from pptx import Presentation
import re
import xml.etree.ElementTree as ET

path = 'mypath'
ppts = [files for files in Path(path).glob('*.pptx')]
for file in ppts:
    file.rename(file.with_suffix('.zip'))
zip_files = ppts = [files for files in Path(path).glob('*.zip')]

for zips in zip_files:
    with zf.ZipFile(zips,'r') as zip_ref:
        zip_ref.extractall(Path(path).joinpath('zipFiles',zips.stem))
然后我做了一些进一步的过滤,最后得到了rels文件夹&ppt/slide文件夹中的xmls

就是在这里,我被卡住了,我可以用
ElementTree
模块读取我的xml,但是我找不到要删除的相关标记

for file in normal_xmls:
    tree = (ET.parse(file).getroot())
    y = tree.findall('a')
    print(y)

这不会产生任何效果,我尝试使用python pptx模块,但是
.Action.Hyperlink
似乎不是一个完整的功能,除非我误解了API

要从形状中删除超链接(单击形状可导航到某处),请将超链接地址设置为
None

shape.click_action.hyperlink.address = None

这真的是两个问题@datanoveler。所以它实际上是为单一问题/单一答案格式设置的,这使得人们更容易在搜索中找到他们想要的东西。如果你把这个问题分成两个独立的问题,我会看两个问题。@scanny刚要去健身房,但我一回来就编辑一个,谢谢你会在我有问题时提到你,如果是的话cool@scanny编辑成一个问题,如果您需要查看pptx的XML,请告诉我。请描述多张幻灯片上的超链接。它是超链接形状还是在文本中?你能识别它所在的形状吗?@scanny如果图像在形状下,那么是的,它在形状内。pptx中没有任何文本,因此只能是一个形状。该死的,这很简单,我想我在阅读文档方面还有很长的路要走,谢谢你的回答&谢谢你提供了这么好的开源软件包。一旦我们上线,我将为英国的一家大公司使用此软件。如果您愿意,我将向您发送一封关于该项目的电子邮件。我很想听到@datanearrow,祝您好运:)