我编写了一个Python脚本,使用wget下载并转换许多图像,然后通过链式调用ImageMagick:for img in images:
convert_str = 'wget -O ./img/merchant/download.jpg %s; ' % img['url']
convert_str += 'convert ./img/merchant/download.jpg -resize 110x110 '
convert_str += ' -background white -gravity center -extent 110x110'
convert_str += ' ./img/thumbnails/%s.jpg' % img['id']
subprocess.call(convert_str, shell=True)
如果我在命令行手动运行convert_str的内容,它看起来工作正常,没有任何错误,但是如果我运行脚本使其重复执行,它有时会给出以下输出:--2013-06-19 04:01:50--
http://www.lkbennett.com/medias/sys_master/8815507341342.jpg
Resolving www.lkbennett.com... 157.125.69.163
Connecting to www.lkbennett.com|157.125.69.163|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22306 (22K) [image/jpeg]
Saving to: `/home/me/webapps/images/m/img/merchant/download.jpg'
0K .......... .......... . 100% 1.03M=0.02s
2013-06-19 04:01:50 (1.03 MB/s) -
`/home/annaps/webapps/images/m/img/merchant/download.jpg' saved [22306/22306]
/home/annaps/webapps/images/m/img/merchant/download.jpg
[Errno 2] No such file or directory:
' /home/annaps/webapps/images/m/img/merchant/download.jpg'
奇怪的是,尽管有No such file or directory消息,这些图像通常看起来已经下载并转换好了。但有时它们看起来很坏,上面有black stripes(即使我使用的是最新版本的ImageMagick),我认为这是因为它们在命令执行之前没有完全下载。
我能对Python或subprocess说:“在第一个命令确实成功完成之前,不要运行第二个命令吗?”。我看不清答案!