本期资源是Python自动化办公的一个案例
Python在自动化办公有很强大的应用,使用Python几百条数据10秒即可搞定,这和Python专门适合处理重复性的工作不无关系,这里作者给各位朋友介绍一个批量转pdf的案例,不是太难
这里需要导入几个模块
from win32com.client import Dispatch # 没有的话输入pip install pywin32命令 即可安装
from os import walk
import os
os是用于文件处理常用的模块,至于Dispatch,它是提供了一个接口, win32提供了多种word转换为其他文件的接口,其中FileFormat=17是转换为pdf格式.
之后转换文件逻辑也很简单,首先需要提取出文件名,word文件的后缀是doc或docx,那么将后缀名替换为pdf即可转换,这里用到replace方法,即replace(‘docx’,‘pdf’).replace(‘doc’,‘pdf’)因为有可能后缀是doc,所以需要2次判断。
值得注意的是,转换的文件夹事先要存在
,否则会报错误。
下面是项目的源代码
from win32com.client import Dispatch # pip install pywin32
from os import walk
import os
wdFormatPDF = 17 # win32提供了多种word转换为其他文件的接口,其中FileFormat=17是转换为pdf
def doc2pdf(input_file, input_file_name, output_dir):
try:
word = Dispatch('Word.Application')
doc = word.Documents.Open(input_file)
except Exception as e:
print("word无法打开, 发生如下错误:\n{}".format(e))
try:
pdf_file_name = input_file_name.replace(".docx", ".pdf").replace(".doc", ".pdf")
pdf_file = os.path.join(output_dir, pdf_file_name)
doc.SaveAs(pdf_file, FileFormat=wdFormatPDF)
doc.Close()
word.Quit()
print("成功转换\"{}\"".format(input_file_name))
print()
except Exception as e:
print("文件保存失败, 发生如下错误:\n{}".format(e))
if __name__ == "__main__":
path_in=input("请输入word文件夹的路径(绝对路径) 要保证存在 建议复制粘贴")
path_out=input("请输入pdf文件夹的路径(绝对路径) 要保证存在 建议复制粘贴")
doc_files = []
directory = path_in# word文件夹
output_dir =path_out # pdf文件夹
for root, _, filenames in walk(directory): # 第2个返回值是dirs, 用不上使用_占位
for file in filenames:
if file.endswith(".doc") or file.endswith(".docx"):
print("转换{}中......".format(file))
doc2pdf(os.path.join(root, file), file, output_dir)