在Popen中使用python的wget

问题描述 投票:0回答:4

我正在编写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将其所有输出写入外壳之前完成的。

我正在编写python(2.7)脚本,该脚本检查是否缺少某些文件并通过wget下载它们。一切正常,但是下载完成并且脚本应退出后,bash(...

python shell popen
4个回答
0
投票

只需在输出后添加.communicate(),就像这样:


0
投票

wget将其统计信息写入os.path.exists,这就是为什么它扰乱了您的终端。将按不同的时间间隔刷新和查询stdout和stderr,因此可能会在stderr的输出之前显示Done


0
投票

您可以使用os.system(但请参见.communicate())。基本上,Popen旨在允许您的python进程从命令输出中读取。您似乎不需要这样做,因此下面的片段应该可以为您提供所需的内容:


0
投票

如果添加-q选项以使其也起作用(相当模式)

© www.soinside.com 2019 - 2024. All rights reserved.