关于 ms office:来自 Python 的 PowerPoint 演示文稿幻灯片计数?

PowerPoint presentation slide count from Python?

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

这是我尝试过的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 演示文稿中获取总幻灯片数?


好的,找到答案了。

它似乎不喜欢相对路径。

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

1
2
3
from os import getcwd

filename = getcwd() + '//' + filename

我认为最简单的方法是这个。
通过这种方式,我可以获得总幻灯片数。

1
2
3
from pptx import Presentation
prs = Presentation("path/example.pptx")
print(len(prs.slides))