首页 文章

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

提问于
浏览
1

由于从我的WIN7电脑打印文件到安装在win xp上运行的网络(本地)PC上的老板'打印机(LX 300)的兼容性问题,我想创建一个应用程序,将在该PC上创建一个文件夹(winxp) )并在每次在该文件夹上添加新文件(word,excel,pdf)时打印(如dropbox除了打印而不是上传) .

我做了我的研究,我已经有了打印脚本(word,excel,pdf)以及创建目录/文件夹的脚本 . 我现在需要的是:

  • 一个python脚本附加(或者可能是其他方式)进入文件夹(我不知道它如何与Dropbox一起工作)将检测该文件夹中新添加的文件并在默认打印机上自动打印打印设置 .

我正在使用Python 3.3 .

1 回答

  • 2

    没有跨平台的方式来监视新文件,缺少一遍又一遍地阅读目录以及查看更改的内容,这是一个非常糟糕的主意 .

    在Windows上查看添加到文件夹的新文件的正确方法是FindFirstChangeNotification函数 . * Obtaining Directory Change Notifications解释了它的工作原理,并以C语言提供示例代码 .

    要从Python使用这些函数,您需要pywin32 . (您可以使用 ctypes 或其他一些较低级别的技术,但没有充分的理由这样做 . )文档位于包内的.chm文件中,或者您可以找到它们的副本at ActiveState . 您想要的功能在win32api模块中 .

    如果你谷歌 Python FindFirstChangeNotification ,你可能会发现很多示例代码 . 但它看起来像这样(不完整和未经测试的代码只是为了让你开始):

    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)
    

    在现实代码中,当你完成时,你想要 FindCloseChangeNotification(ffc) .


    *还有ReadDirectoryChanges,它更容易在C中使用,而且更灵活,并且不会发生变化......但是它的样本代码却少了很少.2855682 .

相关问题