我想在目录(到GUI)中列出(让我们说)PDF文件。我知道我可以用不同的方式管理它(如下所示),但我也希望列表是最新的和动态的。例如,如果有人从目录中删除PDF文件或将PDF文件添加到目录中,我希望应用程序立即删除或将文件名添加到列表中,而不进行任何刷新。
你知道如何管理它吗?
以下是我的一些代码:
import os
pdffiles = [name for name in os.listdir('somedir')
if name.endswith('.pdf')]
for file in pdffiles:
print(file)
我正在学习进步。
答案 0 :(得分:0)
您需要通过操作系统通知目录和/或某些文件已更改。
独立于平台的解决方案是watchdog
将这种方式挂钩到你的程序中并非易事,但看门狗的例子很清楚,这意味着不需要轮询。
答案 1 :(得分:0)
到目前为止,您的代码看起来很不错。如果您想以编程方式执行此操作(避免pynotify或信号处理),在应用程序中维护目录列表的最简单方法是通过轮询目录。
因此,您的代码可能如下所示:
import os
import time
## run indefinitely
while True:
## get the directory listing
pdffiles = [name for name in os.listdir('somedir')
if name.endswith('.pdf')]
## print the most recent listing
for file in pdffiles:
print(file)
## wait a little bit before getting the next listing
## if you want near instantaneous updates, make the sleep value small.
time.sleep(1)