[英].doc to .docx conversion in python
我一直在尝试使用 python 和 win32com 客户端将多个文件从 .doc 保存到 .docx(这样我就可以使用 python docx 程序编辑它们)我运行下面的代码并得到一个“完成且没有错误并退出pycharm 中的 0" 代码。 这是我第一次涉足 Python。
运行它后,我得到 0 个错误,但文件仍然是 all.doc
from glob import glob
import re
import os
import win32com.client as win32
from win32com.client import constants
paths = glob('C:\test\*.doc', recursive=True)
def save_as_docx(path):
word = win32.gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(path)
doc.Activate ()
new_file_abs = os.path.abspath(path)
new_file_abs = re.sub(r'\.\w+$', '.docx', new_file_abs)
word.ActiveDocument.SaveAs(
new_file_abs, FileFormat=constants.wdFormatXMLDocument
)
doc.Close(False)
for path in paths:
save_as_docx(path)
在此之后我得到
“进程以退出代码 0 完成”并且所有文件仍然是 C:\test 文件夹中的.doc。
您应该通过例如打印paths
来稍微调试一下——您的 glob 模式是错误的: 'C:\test\*.doc'
是一个包含C:
的字符串,然后是制表符,然后是 rest。 您需要使用r
aw 字符串来避免反斜杠解释:
paths = glob(r'C:\test\*.doc', recursive=True)
然后, recursive=True
什么都不做,因为你没有使用双星:
paths = glob(r'C:\test\**.doc', recursive=True)
最后,用.docx
替换扩展名最好使用适合该工作的工具,所以总而言之
from glob import glob
import os
import win32com.client as win32
from win32com.client import constants
def save_as_docx(path):
word = win32.gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(path)
doc.Activate ()
new_file_abs = os.path.splitext(os.path.abspath(path))[0] + ".docx"
word.ActiveDocument.SaveAs(
new_file_abs, FileFormat=constants.wdFormatXMLDocument
)
doc.Close(False)
paths = glob(r'C:\test\**.doc', recursive=True)
for path in paths:
save_as_docx(path)
应该更接近你所需要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.