计算特定目录中所有.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。
答案 0 :(得分:1)
好的,找到了答案。
它似乎不喜欢相对路径。
将此行添加到该函数可以解决问题:
from os import getcwd
filename = getcwd() + '//' + filename
答案 1 :(得分:0)
我认为最简单的方法是这样。 通过这种方式,我可以获得幻灯片总数。
from pptx import Presentation
prs = Presentation("path/example.pptx")
print(len(prs.slides))