2013-11-29 40 views
0

由於從我的WIN7電腦打印文檔中的兼容性問題到我的老闆打印機(LX 300+)安裝在聯網(本地)PC上運行的PC上XP,我想創建一個應用程序,該應用程序將在該PC上創建一個文件夾(winxp)並每次在該文件夾中添加一個新文件(word,excel,pdf)時打印(例如,除了打印而不是上載之外的保存盒)。自動檢測文件夾中新添加的文件,並將其打印到默認打印機

我做了我的研究,我已經得到了打印腳本(word,excel,pdf)以及創建目錄/文件夾的腳本。所有我現在需要的是:

  • 是連接(或者其他方式)到 文件夾中的Python腳本(我不知道它是如何與Dropbox的工作),將檢測 新添加的文件在該文件夾中,並使用其默認打印設置在默認的 打印機上自動打印。

我正在使用Python 3.3。

回答

2

沒有跨平臺的方式來觀察新文件,缺乏反覆閱讀目錄並查看更改內容,這是一個非常糟糕的主意。

在Windows上添加新文件的正確方法是FindFirstChangeNotification函數* Obtaining Directory Change Notifications解釋了它是如何工作的,並給出了C++中的示例代碼。

要使用Python中的這些函數,您需要pywin32。 (您可以使用​​或其他一些較低級別的技術,但沒有理由這樣做。)文檔位於軟件包內的.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使用,而且更加靈活,並且不需要手動有一個變化,每次列出目錄...但它實際上是更痛苦的Python和有較少示例代碼在那裏。

相關問題