Skip to main content
 首页 » 编程设计

ms-office之来自 Python 的 PowerPoint 演示文稿幻灯片计数

2025年05月04日13me-sa

计算我所有的 .docx、.doc、.ppt、.pptx 的总页数, 和 .pdf 某个目录下的文件;但对如何计算 PowerPoint 幻灯片有点困惑。

这是我尝试过的:

from glob import glob 
from PyPDF2 import PdfFileReader 
import win32com.client 
 
def pdf_page_count(filename): 
    curr = open(filename, "rb") 
    page_count = PdfFileReader(curr).getNumPages() 
    curr.close() 
    return page_count 
 
def presentation_slide_count(filename): 
    Application = win32com.client.Dispatch("PowerPoint.Application") 
    Presentation = Application.Presentations.Open(filename) 
    slide_count = len(Presentation.Slides) 
    Presentation.Close() 
    return slide_count 
 
if __name__=='__main__': 
    powerpoints = glob('*/*/*.pptx') + glob('*/*/*.ppt') 
    documents = glob('*/*/*.docx') + glob('*/*/*.doc') 
    pdf = glob('*/*/*.pdf') 
 
    total_pdf_pages = sum([pdf_page_count(pdf) for pdf in pdf]) 
    total_docx_pages = 0 
    total_powerpoint_slides = sum([presentation_slide_count(presentation) 
                                   for presentation in powerpoints]) 
 
    print total_pdf_pages 
    print total_powerpoint_slides 

此外,我尝试使用 python-pptx但是我收到了 lxml 错误(因此尝试构建我自己的 lxml;由于 iconv 依赖性问题而出错)。此外,由于它只支持 pptx,我需要为 ppt 找到一个替代方法。 PowerPoint 2013 x64 已安装,我使用的是 Python 2.7.4 x64。

如何使用 Python 从 PowerPoint 演示文稿中获取幻灯片总数?

请您参考如下方法:

好的,找出答案。

它似乎不喜欢相对路径。

将这一行添加到该函数可以解决问题:

from os import getcwd 
 
filename = getcwd() + '//' + filename