在while循环中使用glob模块等待下载
问题描述:
我想在等待文件下载发生时暂停我的python脚本。 我不想使用明确的等待。 我希望它能够快速运行,而不是依靠明确的等待。 我有点不喜欢,但这是我所尝试过的。在while循环中使用glob模块等待下载
file_check = glob.glob1('downloads', '*.pdf')
while not os.path.isfile(str(file_check)):
time.sleep(1)
我使用STR(),因为它抱怨需要的路径的字符串。 我有一种感觉,这不是正确做到这一点的方法。所以我应该如何动态地等待文件下载?
P.S 我.pdf文件下载到“/下载”,和我的PDF所以这就是为什么我需要的水珠通配符动态下载之前命名。
答
当你这样做file_check = glob.glob1('downloads', '*.pdf')
glob.glob1(...)
的结果只存储在file_check
就是这样。在这种情况下,如果在while
循环中输入内容,则永远不会退出,因为file_check
不会更改(除非有线程或可以修改其外部值的东西)。
glob.glob和glob.glob1(这个它甚至不公开,因为你可以看到文档)返回一个列表。如果“下载”文件夹为空,您将收到一个空列表[]
。在Python中,列表有一个implicit booleanness,所以如果列表为空,则在条件语句中它将被解释为False
,或者如果它不是空的,则为“真”。
重写你的代码,结果会是这样的:
while not glob.glob1('downloads', '*.pdf'):
time.sleep(1)