2014-09-26 58 views
0

我可以这样调用./flickrapi作者照片flickapi.py文件,并将其下载20张的的Python POPEN只下载一个文件

如果我直接打电话或使用

x = popen(['./flickrapi', 'author', 'photos', name]) 
x.wait() 
x.communicate() 

一切正常

但如果我只用

popen(['./flickrapi', 'author', 'photos', name]) 

只有一张照片被下载...

所有我需要的是不同寻常地调用脚本下载照片,我的任何提示?

+0

真正的问题是什么?为什么不能像最初描述的那样被调用? – 2014-09-26 13:22:22

+0

问题是,我需要调用进程异步,所以如果“调用者”将结束孩子将继续...而我不想等待结束下载... :) – KOLEGA 2014-09-26 14:17:33

回答

0

我认为这是因为缓冲区的大小。 communicate()会将数据存入内存,以便程序不会卡住。当然,所有的照片都会被下载。这里是waitcommunicate函数的详细信息。

https://docs.python.org/2/library/subprocess.html

希望它能帮助。

+0

所以你的意思是,问题在输出?如果所有照片都使用urllib下载到具体文件,为什么会卡住? – KOLEGA 2014-09-26 14:18:58

+0

@KOLEGA我不知道flickrapi做了什么。但我猜如果你不打电话等待和comminucate,它会下载一个有限的缓冲区大小的文件(我记得限制是64KB),然后停止。 – 2014-09-26 14:26:31

+0

不,当我打电话只是popen问题来... – KOLEGA 2014-09-26 15:18:59