【发布时间】:2012-07-20 13:44:35
【问题描述】:
我正在编写一个 python (2.7) 脚本来检查是否缺少某些文件并通过 wget 下载它们。一切正常,但是在下载完成并且脚本应该退出后,bash(我从中启动 python 脚本)没有正确显示。 我有光标并且可以输入内容,但没有显示标准提示。我必须调整终端窗口的大小才能正确显示提示。这可能是什么原因?
tilenames = ['File1', 'File2', ...]
web_url = http://...
for t in tilenames:
try:
open(t, 'r')
except IOError:
print 'file %s not found.' % (t)
command = ['wget', '-P', './SRTM/', web_url + t ]
output = Popen(command, stdout=subprocess.PIPE)
print "Done"
我认为这与调用 wget 进程的方式有关。最后一个命令 print "Done" 实际上是在 wget 将其所有输出写入 shell 之前完成的。
【问题讨论】:
-
您应该考虑使用
urllib.urlretrieve()而不是wget和os.path.exists()而不是打开所有文件(而不是关闭它们)。 -
你真的应该考虑@SvenMarnach 的评论。如果您可以使用 Python 库执行相同的任务,则无需依赖系统程序(如
wget)。通过为每个文件启动一个新进程,处理输出更容易,并且不会产生系统开销。 docs.python.org/library/urllib2.html