Я использую слегка измененную версию примера «Извлечь весь текст из слайдов в презентацию» по адресу https://python -pptx.readthedocs.io / en / latest / user / quickstart.html для извлечь текст из некоторых слайдов PowerPoint.
Я получаю PackageNotFoundError, когда пытаюсь использовать метод Presentation (), чтобы открыть некоторые файлы PowerPoint для чтения текста.
Похоже, это связано с тем, что до того, как я начал этот проект, мне неизвестно, что некоторые файлы PowerPoint защищены паролем.
Я, очевидно, не ожидаю, что смогу читать текст из файла, защищенного паролем, но есть ли рекомендуемый способ работы с файлами PowerPoint, защищенными паролем? Мой сценарий Python умирает каждый раз, когда он сталкивается с одним, раздражает.
Я бы согласился с тем, что в основном звучало так: «Привет! Файл, который вы пытаетесь прочитать, может быть защищен паролем. Пропуск.»
Я попытался использовать блок try / Кроме того, чтобы перехватить PackageNotFoundError, но затем я получил «NameError: имя« PackageNotFoundError »не определено».
EDIT1: вот минимальный случай, когда генерируется ошибка:
EDIT2: см. Ниже рабочий блок try / catch, благодаря предложению TheGamer007.
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.")