gpt4 book ai didi

python - 使用 python 管道 2 python 脚本

转载 作者:行者123 更新时间:2023-11-28 19:17:45 28 4
gpt4 key购买 nike

我有 3 个 python 文件:1 个用于接受字符串,一个用于反转字符串,一个用于管道传输。我是这个概念的新手,所以请帮助我了解如何实现这一目标。

1.py

def main():
print 'Input Your String : '
stri = raw_input()
return stri

main()

2.py

import sys

if __name__=='__main__':
for line in sys.stdin:
sys.stdout.write(line[::-1])

管道.py

import os

os.system('python 1.py | python 2.py')

我想要实现的是使用另一个 python 文件将 1.py 的输出提供给 2.py。谢谢!

输出:

$ python pipe.py
foo

: gnirtS ruoY tupnI[tecomp@localhost 3264]$

最佳答案

问题是除了 1.py 中的 print 语句外没有标准输出,如果您在 1.py 中使用 print main() 调用 main() 然后通过管道传输进程的标准输出调用该脚本,然后您的代码将工作,使用 pipe.py 作为以下管道将 1.py 的输出传输到 2.py:

from subprocess import PIPE, Popen, STDOUT

p = Popen(["python","1.py"], stdout=PIPE, stderr=STDOUT)
p.wait()
p2 = Popen(["python", "2.py"], stdin=p.stdout, stdout=PIPE, stderr=STDOUT)
p.stdout.close()
out, _ = p2.communicate()
print(out)

1.py:

def main():
return raw_input('Input Your String : ')


if __name__ == "__main__":
print main()

2.py:

import sys

if __name__=='__main__':
for line in sys.stdin:
sys.stdout.write(line[::-1])

或者使用 shell=True 和 check_output:

from subprocess import check_output

out = check_output("python 1.py | python 2.py",shell=True)

关于python - 使用 python 管道 2 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31509821/

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