我想在等待文件下载发生时暂停我的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通配符。
答案 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)