Python 2.7 在.doc文件上循环以将其转换为.pdf(Python)
我正在寻找一种在Python 2.7.x中将.doc文件转换为.pdf的解决方案。与.docx和pdf相比,在Python中处理.doc文件似乎不是那么简单。到目前为止,最适合我的解决方案似乎是可行的,尽管当我尝试扩展它以循环给定目录中的.doc文件时,我遇到了一个错误:Python 2.7 在.doc文件上循环以将其转换为.pdf(Python),python-2.7,loops,pdf-conversion,comtypes,Python 2.7,Loops,Pdf Conversion,Comtypes,我正在寻找一种在Python 2.7.x中将.doc文件转换为.pdf的解决方案。与.docx和pdf相比,在Python中处理.doc文件似乎不是那么简单。到目前为止,最适合我的解决方案似乎是可行的,尽管当我尝试扩展它以循环给定目录中的.doc文件时,我遇到了一个错误: _ctypes.COMError: (-2146823114, None, (u"Sorry, we couldn't find your file. Was it moved, renamed, or deleted
_ctypes.COMError: (-2146823114, None, (u"Sorry, we couldn't find your file. Was it moved, renamed, or deleted?\r (C:\\windows\\system32\\PrivateCourse_AR.doc)", u'Microsoft Word', u'wdmain11.chm', 24654, None))
代码如下:
import os
import comtypes.client
os.chdir('C:\Users\Domi\PycharmProjects\STStransl-auto\doc')
path = os.getcwd()
print path
input = os.listdir(path)
print input
print len(input)
wdFormatPDF = 17 #pdf
i=0
output = '.\doc2txt_{}'.format(i)
word = comtypes.client.CreateObject('Word.Application')
for file in input:
if file.endswith('.doc'):
print file
doc = word.Documents.Open(file)
doc.SaveAs(output, FileFormat=wdFormatPDF)
i += 1
doc.Close()
word.Quit()
欢迎您提供任何关于代码的建议,或者如何在Python中高效地处理.doc文件,我们对此表示欢迎和赞赏。我正在开发一个自动化脚本来处理.docx和.pdf文件(合并、提取文本并将文本拆分为多个文件)。这些都没有问题。遗憾的是,我也有很多.doc文件。非常感谢 请注意,该错误提到了您的文件名,但在系统路径中
C:\\windows\\system32\\PrivateCourse\u AR.doc
这是因为您实际上并没有调用Word子进程,而是使用MSWord调用了一个更复杂的通信协议,显然,这里MSWord正在使用另一个当前目录运行。因此,在这种情况下传递相对文件路径失败(幸运的是,MSWord提供了未找到文件的绝对路径)
要解决此问题,只需执行以下操作:
word.Documents.Open(os.path.abspath(file))
使路径相对于脚本(位于正确目录中)为绝对路径
对于save
部分,可能是相同的问题/修复:
doc.SaveAs(os.path.abspath(output), FileFormat=wdFormatPDF)
旁白:始终为windows文件路径使用原始前缀,您可能会对诸如
C:\temp
(制表符而不是\t
,writer“C:\temp”
)之类的路径感到惊讶,谢谢。很高兴看到这个问答被发现并且对其他人有用:)