Flask 通过 win32com 调用 Word 失败,求助

2019 年 1 月 6 日
 JerryV2

如题,目的是通过 Flask 获取 Word 文件内容,格式可能是 .doc 或者 .docx

在 Flask 内通过 win32com 调用 Word 就会失败,不通过 Flask 就能正常调用。

应该是权限的原因吧? 应该怎么办?

第一次用 Flask,请大神轻拍~

6967 次点击
所在节点    Flask
19 条回复
JerryV2
2019 年 1 月 6 日
@loading
https://v2ex.ih06.com/t/103107

看到你之前做过,还请不吝赐教,多谢
cz5424
2019 年 1 月 6 日
发一下代码看看,单凭你描述解决不了问题
ysc3839
2019 年 1 月 7 日
“在 Flask 内通过 win32com 调用 Word 就会失败”,起码说一下怎么个失败吧?
loading
2019 年 1 月 7 日
@JerryV2 我按你描述的方法写没问题。

还是上次我的回复:


没代码,靠猜?
JerryV2
2019 年 1 月 7 日
代码:

https://gist.github.com/xuqiang1015/e7f3480a2f5b7b9de30e2b9a44dc9687

昨天贴代码没贴上,系统怀疑我在做推广 orz
JerryV2
2019 年 1 月 7 日
错误信息:

File "C:\Python33\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221008, '尚未调用 CoInitialize。', None, None)
127.0.0.1 - - [07/Jan/2019 09:29:56] "GET /DocText/?file=F:\Eclipse%E5%85%B3%E9%94%AE%E5%AD%97.doc HTTP/1.1" 500 -
julyclyde
2019 年 1 月 7 日
随便一搜错误信息不就能找到答案么?你这动手能力太差了吧
JerryV2
2019 年 1 月 7 日
@julyclyde

并没有随便一搜就找到答案,试过手动初始化 COM,并没有解决问题
julyclyde
2019 年 1 月 7 日
@JerryV2 也许你用的搜索引擎和我不一样吧

试过手工初始化并没有解决问题,你至少得发一下这个做法之后有什么进展吧
JerryV2
2019 年 1 月 7 日
把

pythoncom.CoInitialize()

放到 ReadDocText 函数内可以了,之前放在函数外面不可以

@julyclyde
julyclyde
2019 年 1 月 7 日
@JerryV2 之前把 CoInitialize 放在函数外边不可以,是具体放在了哪个位置?
deadEgg
2019 年 1 月 7 日
JerryV2
2019 年 1 月 7 日
JerryV2
2019 年 1 月 7 日
在此声明一下,我不是伸手党啊, 确实去 Google 了,但是没想到 COM 初始化的位置还会有影响,等有时间研究一下这背后的区别吧,或者哪位大神愿意解答一下,在此先表示感谢
julyclyde
2019 年 1 月 7 日
你启动程序的时候是用 app.run 这段启动的,还是另外用了 gunicorn、uwsgi 之类的来启动的呢?
JerryV2
2019 年 1 月 7 日
@julyclyde
通过 app.run 启动的,我贴的源码就是全部源码,通过 VSCode 调试启动
julyclyde
2019 年 1 月 7 日
@JerryV2 我建议手工启动一下试试。调试启动不知道是不是环境不干净
ysc3839
2019 年 1 月 7 日
试试在文件最开头加上

import sys
sys.coinit_flags = 0
JerryV2
2019 年 1 月 7 日
@ysc3839

果然可以,厉害了!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/524454

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX