Python 自动检测文件夹中新添加的文件并在默认打印机上打印

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一起工作)将检测到 在该

由于将文档从我的WIN7 pc打印到安装在运行win xp的联网(本地)pc上的我老板的打印机(LX 300+)时存在兼容性问题,我想创建一个应用程序,在该pc(winxp)上创建一个文件夹,并在每次在该文件夹上添加新文件(word、excel、pdf)时进行打印(与dropbox类似,只是打印而不是上传)

我做了研究,已经得到了打印脚本(word、excel、pdf)和创建目录/文件夹的脚本。现在我只需要:

  • 附加(或其他方式)到 文件夹(我不知道它如何与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)