【发布时间】:2016-06-15 23:02:00
【问题描述】:
例如:
script1.py 从用户处获取中缀表达式并将其转换为后缀表达式并返回或打印到标准输出
script2.py 从标准输入获取一个后缀表达式并对其求值并输出值
我想做这样的事情:
python3 script1.py | python3 script2.py
但这不起作用,你能指出我如何做到这一点的正确方向吗?
编辑-
这里有一些关于“不起作用”的更多细节。
当我执行 python3 script1.py | python3 script2.py 终端要求我输入 script2.py 程序,而它应该要求输入 script1.py 程序并将其重定向为 script2.py 的输入。
所以它要求我“输入一个后缀表达式:”,当它应该问“输入一个中缀表达式:”并将其重定向到后缀脚本时。
【问题讨论】:
-
如果将它们作为函数并按顺序调用它们会有什么问题。顺便说一句,您的方式应该可行,问题一定是您的反序列化。
-
该命令行应该完全按照您所说的去做。 准确地说,它如何未能满足您的期望? (“它不起作用”是一个完全没有信息的问题报告。)
-
我将脚本定义为两个单独的函数并按顺序调用它们并没有错,但我想学习如何以这种方式进行操作。至于反序列化,你能详细说明一下吗?
-
@rici 我提供了有关该问题的更多详细信息,希望对您有所帮助。
-
@7alman:想想发生了什么。您正在将第一个脚本的输出重定向到第二个脚本。所以如果你的第一个脚本输出“输入一个中缀表达式”,你认为输出会去哪里??? (当输入来自另一个脚本而不是人类时,第二个脚本提示是多么愚蠢?)这就是脚本不应该提示的原因。如果您坚持提示,则应将提示发送到stderr,而不是stdout。
标签: bash shell python-3.x pipe io-redirection