gpt4 book ai didi

python - 使用 shlex 和子进程时出错

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:47 26 4
gpt4 key购买 nike

嗨,我正在尝试使用 shlex split 在 python 的子进程中运行此命令,但是,我没有发现任何对这种特殊情况有帮助的东西:

ifconfig | grep "inet " | grep -v 127.0.0.1 | grep -v 192.* | awk '{print $2}'

我收到 ifconfig 错误,因为单引号和双引号的分割,甚至 $ 符号之前的空格都不正确。请帮忙。

最佳答案

您可以使用 shell=True (shell 将解释 |)和三引号字符串文字(否则您需要转义 ", ' 在字符串文字内):

import subprocess
cmd = r"""ifconfig | grep "inet " | grep -v 127\.0\.0\.1 | grep -v 192\. | awk '{print $2}'"""
subprocess.call(cmd, shell=True)

或者你可以用更难的方式来做( Replacing shell pipeline from subprocess module documentation ):

from subprocess import Popen, PIPE, call                                       

p1 = Popen(['ifconfig'], stdout=PIPE)
p2 = Popen(['grep', 'inet '], stdin=p1.stdout, stdout=PIPE)
p3 = Popen(['grep', '-v', r'127\.0\.0\.1'], stdin=p2.stdout, stdout=PIPE)
p4 = Popen(['grep', '-v', r'192\.'], stdin=p3.stdout, stdout=PIPE)
call(['awk', '{print $2}'], stdin=p4.stdout)

关于python - 使用 shlex 和子进程时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35619348/

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