我正在https://python-pptx.readthedocs.io/en/latest/user/quickstart.html上使用“从演示文稿中的幻灯片中提取所有文本”示例的稍作修改的版本,以从某些PowerPoint幻灯片中提取文本。
当我尝试使用Presentation()方法打开一些PowerPoint文件以读取文本时,我遇到了PackageNotFoundError。
这似乎是由于这样的事实,在我开始这个项目之前,我不知道有一些PowerPoint文件受到密码保护。
我显然不希望能够从受密码保护的文件中读取文本,但是有没有建议的方法来处理受密码保护的PowerPoint文件?每当我的Python脚本遇到一个脚本时,它就会死掉。
我基本上可以接受以下内容:“嗨!您尝试读取的文件可能受密码保护。正在跳过。”
我尝试使用try / except块捕获PackageNotFoundError,但是随后出现“ NameError:名称'PackageNotFoundError'未定义”。
EDIT1:这是产生错误的最小情况:
EDIT2:感谢TheGamer007的建议,请参见下面的try / catch块。
import pptx
from pptx import Presentation
password_protected_file = r"C:\Users\J69401\Documents\password_protected_file.pptx"
prs = Presentation(password_protected_file)
这是生成的错误:
Traceback (most recent call last):
File "T:/W/Wintermute/50 Sandbox/Pownall/Python/copy files/minimal_case_opening_file.py", line 6, in <module>
prs = Presentation(password_protected_file)
File "C:\Anaconda3\lib\site-packages\python_pptx-0.6.18-py3.6.egg\pptx\api.py", line 28, in Presentation
presentation_part = Package.open(pptx).main_document_part
File "C:\Anaconda3\lib\site-packages\python_pptx-0.6.18-py3.6.egg\pptx\opc\package.py", line 125, in open
pkg_reader = PackageReader.from_file(pkg_file)
File "C:\Anaconda3\lib\site-packages\python_pptx-0.6.18-py3.6.egg\pptx\opc\pkgreader.py", line 33, in from_file
phys_reader = PhysPkgReader(pkg_file)
File "C:\Anaconda3\lib\site-packages\python_pptx-0.6.18-py3.6.egg\pptx\opc\phys_pkg.py", line 32, in __new__
raise PackageNotFoundError("Package not found at '%s'" % pkg_file)
pptx.exc.PackageNotFoundError: Package not found at 'C:\Users\J69401\Documents\password_protected_file.pptx'
这再次是最小的情况,但是具有正常工作的try / catch块。
import pptx
from pptx import Presentation
import pptx.exc
from pptx.exc import PackageNotFoundError
password_protected_file = r"C:\Users\J69401\Documents\password_protected_file.pptx"
try:
prs = Presentation(password_protected_file)
except PackageNotFoundError:
print("PackageNotFoundError generated - possible password-protected file.")