代码之家  ›  专栏  ›  技术社区  ›  Hayden Seward

|未在子流程中工作。呼叫

  •  0
  • Hayden Seward  · 技术社区  · 6 年前

    每当我在带有“|”的子进程中使用命令时,该命令不起作用,它的输出为 命令“|”未知,请尝试“在链接帮助中”。 或者当我说:

    #!/usr/bin/python
    from subprocess import call
    from shlex import split
    
    interface = call(split("ip -o link show | awk '{print $2}' | grep wl"))
    

    它给出以下输出:

    Error: either "dev" is duplicate, or "awk" is a garbage.
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   slackmart    6 年前

    您可以使用 subprocess.check_output 方法和 Popen 虽然我无法将这两个管道操作链接起来,但仍然是一个类。部分解决方案:

    from subprocess import check_output, Popen, PIPE
    from shlex import split
    
    process = Popen(split('ip -o link show'), stdout=PIPE)
    output = check_output(('awk', '{print $2}'), stdin=process.stdout)
    return_code = process.wait()
    print(output, return_code)
    

    所以基本上,awk process 标准输出,结果保存在 output 变量