Python 自动检测文件夹中新添加的文件并在默认打印机上打印
由于将文档从我的WIN7 pc打印到安装在运行win xp的联网(本地)pc上的我老板的打印机(LX 300+)时存在兼容性问题,我想创建一个应用程序,在该pc(winxp)上创建一个文件夹,并在每次在该文件夹上添加新文件(word、excel、pdf)时进行打印(与dropbox类似,只是打印而不是上传) 我做了研究,已经得到了打印脚本(word、excel、pdf)和创建目录/文件夹的脚本。现在我只需要:Python 自动检测文件夹中新添加的文件并在默认打印机上打印,python,excel,pdf,printing,ms-word,Python,Excel,Pdf,Printing,Ms Word,由于将文档从我的WIN7 pc打印到安装在运行win xp的联网(本地)pc上的我老板的打印机(LX 300+)时存在兼容性问题,我想创建一个应用程序,在该pc(winxp)上创建一个文件夹,并在每次在该文件夹上添加新文件(word、excel、pdf)时进行打印(与dropbox类似,只是打印而不是上传) 我做了研究,已经得到了打印脚本(word、excel、pdf)和创建目录/文件夹的脚本。现在我只需要: 附加(或其他方式)到 文件夹(我不知道它如何与Dropbox一起工作)将检测到 在该
- 附加(或其他方式)到 文件夹(我不知道它如何与Dropbox一起工作)将检测到 在该文件夹中新添加的文件,并在默认情况下自动打印 具有默认打印设置的打印机
我使用的是Python3.3。没有跨平台的方法来查看新文件,除了一遍又一遍地阅读目录并查看更改的内容之外,这是一个非常糟糕的想法
查看新文件添加到Windows文件夹的正确方法是函数.*解释它是如何工作的,并在C++中提供示例代码.< 要使用Python中的这些函数,您需要。(您可以使用
ctypes
或其他较低级别的技术,但没有理由这样做。)文档位于包中的.chm文件中,或者您可以找到它们的副本。您需要的函数位于模块中
如果您在google上搜索Python FindFirstChangeNotification,您可能会发现很多示例代码。但它看起来是这样的(不完整且未经测试的代码只是为了让您入门):
在实际代码中,您可能需要一些更好的错误处理,并且在完成后需要FindCloseChangeNotification(ffc)
*还有一个更容易从C中使用,更灵活,不需要每次更改时都手动列出目录…但实际上Python更痛苦,而且它的示例代码更少。我不得不将
win32con.INFINITE
更改为win32event.INFINITE
。
ffc = win32api.FindFirstChangeNotification(path, 0,
win32con.FILE_NOTIFY_CHANGE_FILE_NAME)
last_contents = set(os.listdir(path))
while True:
win32event.WaitForSingleObject(ffc, win32con.INFINITE)
contents = set(os.listdir(path))
new_files = contents - last_contents
for file in new_files:
run_your_script_that_prints_a_file(file)
last_contents = contents
win32api.FindNextChangeNotification(ffc)