前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python调用win32api 拉起wps问题排查解决方案

python调用win32api 拉起wps问题排查解决方案

作者头像
德宏大魔王
发布2023-08-08 14:57:43
7980
发布2023-08-08 14:57:43
举报
文章被收录于专栏:cloud stdio

系列文章

【毕业设计】基于mqtt+vue+Thinkphp实现校园云打印小程序 (暂未完成更新)

前言

因为这篇文章【毕业设计】基于mqtt+vue+Thinkphp实现校园云打印小程序,我想通过mqtt唤醒客户端调用打印机,但是在实现过程中其他生产环境没办法使用,不是出现报错就是未知错误,期间找了很多方案,最后整合一下我的处理结果,建议大家配合文章查看,不然就搞不懂我在说啥

问题排查

第一个问题,pywintypes.com_error: (-2147221005, ‘无效的类字符串’, None, None)

通过编译后的tk软件在其他电脑上能运行但是不会处理,猜想应该是代码错误导致停止运行了

我的验证方法是,在其他电脑上运行源代码,发现出现错误

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
pywintypes.com_error: (-2147221005, '无效的类字符串', None, None)

解决办法 报错的代码是这一段,大概就是调用wps出错,因为我的wps版本是抢先版,所以需要用kwps

代码语言:javascript
复制
 w = DispatchEx('wps.Application')
 w.Visible = 0  # 不打开软件
w.DisplayAlerts = 0  # 不报错
doc = w.Documents.Open(f)

改了之后的代码,完美运行:

代码语言:javascript
复制
 w = DispatchEx('kwps.Application')
 w.Visible = 0  # 不打开软件
 w.DisplayAlerts = 0  # 不报错
 doc = w.Documents.Open(f)

只需要装有同个版本的wps即可解决

第二个问题,pywintypes.com_error: (-2147221008, ‘尚未调用 CoInitialize。’, None, None)

原因:经网上查明:是由于多线程使用pywin32com造成的问题

解决办法:

代码语言:javascript
复制
import pythoncom
 

# 线程初始化
pythoncom.CoInitialize()
 
# 程序代码
# 程序代码


# 释放资源
pythoncom.CoUninitialize()

于是在调用打印代码的第一行写入线程初始化

代码语言:javascript
复制
pythoncom.CoInitialize()

末尾释放资源

代码语言:javascript
复制
pythoncom.CoUninitialize()

最后代码:

代码语言:javascript
复制
# 线程初始化
pythoncom.CoInitialize()
## 需要打印文件或文件夹的路径
path = r'C:\Users\MAC\Desktop\test'
traver(path)
print("文件读取完毕,共有{}个".format(q.qsize()))
docx_print()
# 释放资源
pythoncom.CoUninitialize()

完美解决以上问题!!!

总结

以上就是记录今天遇到的问题,pywin32api打印机问题完美解决,不过调用的只能是wps

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系列文章
  • 前言
  • 问题排查
    • 第一个问题,pywintypes.com_error: (-2147221005, ‘无效的类字符串’, None, None)
      • 第二个问题,pywintypes.com_error: (-2147221008, ‘尚未调用 CoInitialize。’, None, None)
      • 总结
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档