首页 > 解决方案 > 等价于 bash "|" 在python3中

问题描述

在 bash 中,您可以执行此操作echo a | python -c "print('example:', input())",您将获得example: a. 你怎么能在python中做同样的事情。

我试过这样做:

pid = os.fork()
if not pid:
    os.dup2(0, 1)
    os.execv("/usr/local/bin/python3", ["/usr/local/bin/python3", "-c", "print('example:', input())"])
else:
    subprocess.call(["echo", "a"])

我试过这个:

proc1 = subprocess.Popen(["echo", "a"], stdout=subprocess.PIPE)
proc2 = subprocess.Popen(["python", "-c", "print('example:', input())"], stdin=subprocess.PIPE)
proc2.stdin.write(proc1.stdout.read())

但两次都出现了这个错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
EOFError

标签: python-3.xbash

解决方案


推荐阅读