我是做运维的,做运维就为因为单位的要求而去寻求不同的方案.很多时候你网上找一个方案要各种配置,碰到配置复杂的可能要耗费大量的时间去检查日志,检查环境.如果自己会一点东西,那么可能自己写一个都比网上找一个配置起来更快
今天还是满满的干货!直接放代码图,其实这些代码对一个初学者来说有点难了.
但是如果你每次代码都是通过自己手打的,这样你对python的感觉会好很多,从打代码的过程就可以学到很多的基础.因为你手打的过程不小心的话很容易出现问题,然后通过自己的耐心排错.然后在打代码的时候知道一些基本的模块,然后通过我的代码以及自己学到的东西去举一反三.成长最快的就是通过自己的耐心去排错.
你可以先从我的github下载这个源码,试着直接运行,然后打印一个文件,你会发现你的打印记录就会被监视到.
里面要显示的内容当然是自己可以根据自己的需求拼接而成.
importtime #导入time模块
importwin32print #导入win32print模块
importsocket,datetime #导入socket和datetime模块
以上三行你也可以写成一行,只要用逗号隔开就行.实际真正起作用的是win32print模块,其它的模块我们只是用来作其它辅助作用
比如
server = socket.gethostname()
我们只是通过socket模块拿到了服务器的名称,因为我是在本机跑的,所以打印的服务器跟打印的客户端都是同一台
可能真正有疑问的是这句:
forpinwin32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL,None,1):
你不知道这句应该怎么写,里面可以填哪些参数
微软的帮助如下
https://msdn.microsoft.com/en-us/library/windows/desktop/dd162692(v=vs.85).aspx
document = job["pDocument"]
username = job['pUserName']
identity = job['JobId']
jobstate = job['Status']
machinename = job['pMachineName'].replace("\\\\","")
Pages = job['TotalPages']
而这些都是从上面监视到的事件提出来的信息赋值给某一个变量
比如谁打印的,打印的文件名是什么,打印状态是什么,打印的时候就是通过上面的datetime模块才查询到的本机时间
printstr ="[Server:"+ server +"],[Who:"+ username +"],[Computer:"+ machinename +"],[Print Time:"+ pTime +"],[JobID:"+str(identity) +"]"
这句就是拼接出你要显示的东西
另外想问一下,你是通过什么途径关于我的?感谢你的反馈
领取专属 10元无门槛券
私享最新 技术干货