gpt4 book ai didi

Python从wget捕获输出?

转载 作者:行者123 更新时间:2023-11-28 20:54:31 30 4
gpt4 key购买 nike

是否可以捕获 wget 和其他使用 curses 的命令行程序的输出?这是我现在拥有的:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=0)
for line in p.stdout:
print "a"

这适用于具有简单输出的程序,但不适用于 wget 和其他使用 curses 的程序。

最佳答案

我不相信 wget 使用了 curses。

通常,当我想在脚本中使用 wget 时,我会使用 -O - 选项强制其输出到 标准输出。我怀疑您正在 try catch 运行控制台时通常在控制台上看到的文本,即stderr

在 Python 之外的命令行中,只需运行如下命令:

wget -O - http://www.somesite.org/ > /tmp/wget.out 2> /tmp/wget.err

然后查看两个输出文件。如果您在控制台/终端上看到 wget 的任何输出,那么您运行的命令风格与我看到的不同。

如果像我怀疑的那样,您真的对 stderr 消息感兴趣,那么您有两个选择。

  • 更改您的命令以添加 2>&1 并将 shell=True 添加到您的 Popen() 参数
  • 或者(最好)将 stderr=subprocess.PIPE 添加到您的 Popen() 参数

如果你不使用 stdout 前者很方便(假设你使用wget 获取数据并将其写入文件)。在后一种情况下,您从 stderr 文件选项中读取以获取数据。

顺便说一句:如果您确实需要捕获curses 数据...您可以尝试使用标准的pty 模块,但我不会'推荐那个。你最好从以下位置获取 pexpect 模块:

不要被年龄或版本编号吓到,它适用于 Python 2.5 和 2.6 以及 2.4 和 2.3。

关于Python从wget捕获输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1290910/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com