pywin32:python操作windows底层的库,主要是对vb的封装
最近在工作中遇到的问题就是个别的文档不知道编码,但是可以用word打开,于是酒啊调用pywin32对文档进行操作,本篇讲的主要是思路
通过word打开文档,保存为'.docx'文件,然后再进行数据操作
下边代码是多线程编写的,但是没有编写完(持续更新),没有进入循环,但是转文件已经没有问题了
import os
import win32com
import pythoncom
from win32com.client import Dispatch
import shutil
import threading
def trans(wordFile, i):
try:
# print(wordFile)
pythoncom.CoInitialize()
word_app = win32com.client.Dispatch('Word.Application')
worddoc = word_app.Documents.Open(wordFile)
# 生成的文件路径
worddoc.SaveAs('D:\\2\\{}.docx'.format(i), 16) #此处16一定要加
worddoc.Close()
word_app.Quit()
FilePath = 'D:\\2\\{}.files'.format(i)
del_file(FilePath)
except Exception as e:
print("错误:", e)
# 删除多余的文件夹
def del_file(FilePath):
if os.path.exists(FilePath):
print("存在")
print(FilePath)
for file_name in os.listdir(FilePath):
print(file_name)
file_name1 = FilePath + '\\' + file_name
os.remove(file_name1)
shutil.rmtree(FilePath)
def get_file(i):
# 需要遍历的文件夹
item = {}
for wordFile in os.listdir('C:\\Users\znb\Desktop\裁判文书文件\新建文件夹'):
# 文件的路径
wordFile = 'C:\\Users\znb\Desktop\裁判文书文件\新建文件夹\\{}'.format(wordFile)
i = i + 1
item['wordFile'] = wordFile
item['i'] = i
yield item
if __name__ == "__main__":
thread_list = []
i = 0
A = get_file(i)
for n in range(5):
# print(A.__next__())
B = A.__next__()
print(B)
t = threading.Thread(target=trans, args=(B['wordFile'], B['i']))
thread_list.append(t)
for t in thread_list:
t.start()
for t in thread_list:
t.join()
作者QQ群(非培训):832785950(备注来地)
网友评论