【发布时间】:2013-06-15 21:59:26
【问题描述】:
我编写了一个 Python 脚本,它使用 wget 和 ImageMagick 通过 chainedsubprocess 调用下载和转换许多图像:
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 说:“在第一个命令确定成功完成之前不要运行第二个命令?”。我found this question但看不到明确的答案!
【问题讨论】:
-
对我来说有趣的是错误行中
/home前面的额外空格......(虽然我看不出它来自哪里)
标签: python imagemagick subprocess imagemagick-convert