Python: Calling multiple wget with os.system does hang in between each call
我有以下代码:
1 2 3 4 5
| #!/usr/bin/env python
import os
os.system("wget -directory-prefix=myDir/1 URL1")
os.system("wget -directory-prefix=myDir/2 URL2")
os.system("wget -directory-prefix=myDir/3 URL3") |
在每次调用之间,脚本都会"挂起",当我按ctrl-c时,脚本继续工作。关于如何解决此问题的任何想法?
编辑:我现在完全编辑了我的问题。
- 抱歉,如果在这里,但我不明白-您的问题是什么?您想做点别的吗?如果是这样,您想做些什么?
-
在没有证书文件或不知道要下载什么URL的情况下,我可以准确地重现此内容,但是我尝试以相同的方式运行一些基本的wget命令,然后它们连续运行。但是我没有尝试-r选项,这可能与它有关(也许-r导致它分叉或其他原因)。它创建了哪些目录,因为根据您发布的内容,它们都应该保存到myDir/1?是什么让您认为它们没有连续运行?
-
确实改变了我的问题,对不起您之前不太清楚。
-
这对我有用,每次下载都是按顺序完成的,每个文件都保存在其目录中
Python正在等待文件下载,因为os.system()不是异步的。只要您不必与脚本中的这些文件进行实际交互,就可以使用subprocess.Popen()异步下载它们。
查看此帖子以获取更多信息如何从Python异步运行外部命令?
- 难道那不完全占用我的硬盘I / O和网络带宽吗?我正在下载大量文件和千兆字节。
-
无论哪种方式,如果您想使用wget,系统都将接管,而这些下载过程的运行方式将不受您的直接控制。 Popen至少会减少python进程本身的麻烦。但是,如果您希望能够顺序下载这些文件,并且仍然在脚本的控制下进行整个过程(并避免出现这些奇怪的挂起问题),建议您使用urllib2之类的python库之类的东西,而不是劫持os.system。 。
-
您的回答将对我有所帮助,尽管我仍然很好奇为什么我的脚本(如上)确实在wget步骤之间停止了。步骤1完成后,步骤2尚未开始,但是我需要按ctrl-c才能继续。