在while循环中使用glob模块等待下载

时间:2016-12-04 00:44:19

标签: python-3.x while-loop wait glob pause

我想在等待文件下载发生时暂停我的python脚本。 我不想使用明确的等待。 我想让它快速运行而不是依赖于明确的等待。 我有点犹豫不决,但这就是我的尝试。

file_check = glob.glob1('downloads', '*.pdf')
        while not os.path.isfile(str(file_check)):
            time.sleep(1)

我使用str()因为它抱怨路径需要一个字符串。 我觉得这不是正确做到这一点的方法。那么我应该如何动态等待文件下载?

P.S 我的.pdf文件下载到' / downloads',我的pdf在下载前动态命名,这就是为什么我需要globs通配符。

1 个答案:

答案 0 :(得分:0)

执行file_check = glob.glob1('downloads', '*.pdf')后,glob.glob1(...)的结果只会存储在file_check一次,就是这样。在这种情况下,如果你进入while循环,你永远不会离开那里因为file_check不会改变(除非有线程或类似的东西可以在外部修改它们的值)。< / p>

glob.glob和glob.glob1(这个甚至不公开,因为你可以看到文档)返回一个列表。如果'downloads'文件夹为空,您将获得一个空列表[]。在Python中,列表具有implicit booleanness,因此如果列表为空,则在条件语句中它将被解释为False,如果它不为空,则为“True”。

重写你的代码结果将是这样的:

while not glob.glob1('downloads', '*.pdf'):
    time.sleep(1)