写点什么

Python 监控打印机队列

发布于: 2021 年 05 月 11 日

很久之前做过自动化打印资料的工具,一直也还算稳定,但是最近突然出现很多 size 特别的文件,导致原本文件顺序正常的输出变成了极其混乱的状态。


今天用 Python 重写了一下,分享一段用于监控打印机队列的代码,希望能帮助有同样需求的小伙伴

import timeimport win32print
#----------------------------------------------------------------------def print_job_checker(): """ 每1秒确认一下打印机的打印队列内容 """ jobs = [1] while jobs: jobs = [] for p in win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL, None, 1): flags, desc, name, comment = p phandle = win32print.OpenPrinter(name) print_jobs = win32print.EnumJobs(phandle, 0, -1, 1) if print_jobs: jobs.extend(list(print_jobs)) for job in print_jobs: print( "printer name => " + name) # 打印机 document = job["pDocument"] print( "Document name => " + document) # 文档名 win32print.ClosePrinter(phandle) time.sleep(1) print( "No more jobs!") #----------------------------------------------------------------------if __name__ == "__main__": print_job_checker()
复制代码

1. win32print

这是一个第三方库,需要你安装,安装方式如下

pip install win32print
复制代码

如果有必要的话,可以用国内源来安装,这样速度会比较快。

2. 关于打印机

我们这里使用了默认的打印机,因此在你准备使用的时候,记得先设置好用哪一台打印机。

3. 关于 jobs 的设定

我们默认是一个包含一个元素的列表,这一点很重要,如果你设置了一个空白的列表,那么下面的循环也就没有作用了,从而也就起不到监控打印机的作用了,但是也不能设置成死循环,这样的话的就没有办法进入监控打印机后面的作业了。

发布于: 2021 年 05 月 11 日阅读数: 30
用户头像

一个日语专业的程序猿。 2017.09.10 加入

【坐标】无锡 【软件技能】Java,C#,Python 【爱好】炉石传说 【称号】InfoQ年度人气作者,Intel OpenVINO领航者联盟成员 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
Python监控打印机队列