gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:31:08 24 4
gpt4 key购买 nike

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

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

  • 附加(或可能以其他方式)到文件夹(我不知道它如何与 Dropbox 一起使用)将检测到该文件夹中新添加的文件并默认自动打印具有默认打印设置的打印机。

我使用的是 Python 3.3。

最佳答案

没有跨平台的方法来监视新文件,除非一遍又一遍地读取目录并查看发生了什么变化,这是一个非常糟糕的主意。

在 Windows 上监视添加到文件夹的新文件的正确方法是 FindFirstChangeNotification功能。* Obtaining Directory Change Notifications解释了它的工作原理,并提供了 C++ 示例代码。

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

如果您在 google 上搜索 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 中更容易使用,也更灵活,并且不需要每次发生更改时手动列出目录......但实际上在 Python 中更痛苦,并且可用的示例代码更少。

关于python - 自动检测文件夹中新添加的文件并在默认打印机上打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20280096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com