Как закрыть презентацию, не сохраняя ее в Python pptx - PullRequest
1 голос
/ 19 марта 2020

Мне нужно открыть несколько презентаций, используя al oop, получить некоторые данные и закрыть их.

Не получается найти способ закрыть файл ppt в python pptx без сохранения / перезаписи.

Я использую следующее для открытия файла ppt

pptfile = addressList[xyz]
prs = Presentation(pptfile)
slides = prs.slides

, но я не могу найти способ закрыть презентацию (prs) без сохранения, чтобы загрузить следующий ppt

У меня есть временное решение, которое выглядит следующим образом

prs.save(r"C:\Users\prashant.kumar\temp.pptx")

Поскольку prs.save закрывает ppt, он работает нормально, но я хочу лучший способ закрыть ppt без создания временного ppt-файла.

Есть ли атрибут Presentation для python-pptx, который я могу использовать для закрыть ppt без сохранения?

Ответы [ 3 ]

1 голос
/ 19 марта 2020

Есть ли атрибут Presentation для python -pptx, который я могу использовать, чтобы закрыть ppt без сохранения?

Просто ... прекратить его использовать? pptx, похоже, не имеет __del__, поэтому, если вы просто прекратите использовать его без сохранения, его не следует сохранять.

Если это по какой-то причине не сработает (хотя это будет странным, опять же, Я не вижу, куда бы он сохранял измененную презентацию), вы можете дать pptx файловый объект , который вы можете закрыть после загрузки презентации:

pptfile = addressList[xyz]
with open(pptfile, 'rb') as f:
    prs = Presentation(f)
slides = prs.slides

он должен не сможет изменить файл тогда, даже если захочет.

1 голос
/ 19 марта 2020

python-pptx не держит файл открытым, пока вы над ним работаете. Когда вы вызываете:

prs = Presentation(pptfile)

Файл pptfile открывается, считывается в память и закрывается, все перед возвратом объекта Presentation. Таким образом, вы можете просто использовать ссылку prs для всего, что вам нужно, а затем отказаться от нее для сборки мусора, так же, как и любой другой объект в Python.

. В вашем вопросе вы не упомянули проблему с некоторые операции запрещены из-за того, что файл открыт, поэтому я предполагаю, что вы просто подумали, что это будет проблемой, и на самом деле ее не было.

0 голосов
/ 19 марта 2020

Вы можете попробовать это:

import os

os.system("TASKKILL /F /IM powerpnt.exe")
...