我想在等待文件下载时暂停我的python脚本。我不想使用显式的等待。我希望它运行得更快,而不是依赖于显式的等待。我有点幼稚,但这是我尝试过的。
file_check = glob.glob1('downloads', '*.pdf')
while not os.path.isfile(str(file_check)):
time.sleep(1)我使用str()是因为它抱怨路径需要一个字符串。我有一种感觉,这不是正确做到这一点的方法。那么我应该如何动态地等待文件下载呢?
P.S我的.pdf文件下载到'/ downloads‘中,并且我的pdf在下载之前是动态命名的,所以这就是我需要全局通配符的原因。
发布于 2016-12-07 09:21:39
当您执行file_check = glob.glob1('downloads', '*.pdf')时,glob.glob1(...)的结果只在file_check中存储一次,仅此而已。在这种情况下,如果您进入while循环,您将永远不会离开它,因为file_check不会改变(除非有线程或类似的东西可以在外部修改它们的值)。
glob.glob和glob.glob1 (正如您在文档中看到的,它甚至不是公共的)返回一个列表。如果'downloads‘文件夹是空的,你会得到一个空的列表[]。在Python语言中,列表有一个implicit booleanness,所以如果列表是空的,在条件语句中它将被解释为False,如果不为空,则解释为'True‘。
重写你的代码,结果会是这样:
while not glob.glob1('downloads', '*.pdf'):
time.sleep(1)https://stackoverflow.com/questions/40954178
复制相似问题