【问题标题】:pass data among processes in python [duplicate]在python中的进程之间传递数据[重复]
【发布时间】:2015-07-28 17:10:26
【问题描述】:

我正在尝试熟悉 subprocess.Popen 机制。

在下面的示例中,我尝试运行 netstat 然后在输出上运行 grep。

netstat = subprocess.Popen("netstat -nptl".split(), stdout = subprocess.PIPE)
grep = subprocess.Popen("grep 192.168.46.134".split(), stdin = subprocess.PIPE)

但是这不会产生想要的输出。

【问题讨论】:

    标签: python pipe subprocess


    【解决方案1】:

    您需要将第一个进程的stdout 引用为第二个进程的stdin

    import subprocess
    
    netstat = subprocess.Popen("netstat -nptl".split(), stdout=subprocess.PIPE)
    grep = subprocess.Popen("grep 192.168.46.134".split(), stdin=netstat.stdout, stdout=subprocess.PIPE)
    
    stdout, stderr = grep.communicate()
    print stdout # this is a string containing the output
    

    【讨论】:

    • 我收到“破管”错误... :(
    • 很奇怪,我刚刚尝试过(由于我目前在 Windows 上,使用的命令略有不同)并且效果很好。之后你打电话给grep.communicate(),对吧?
    • 我没有运行 grep.communicate(),为什么需要?
    • 那你是怎么运行的呢?您可以通过运行stdout, stderr = grep.communicate() 获得所需的输出。
    • 我不确定标准输出,stderr = grep.communicate()。您能否编辑答案以包含此内容?我对 Python 完全不熟悉...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多