我正在尝试在 shell 中执行命令并同时通过管道输出进行过滤。
相关代码如下所示:
import os
n=raw_input("enter cmd")
os.system(n + ' | grep x')
结果是
Syntax error: Redirection unexpected.
它在 ubuntu 上,似乎网上的一些参考资料提到了这一点,但没有一个我可以直接关联。似乎 subprocess 可能会有所帮助,但大多数例子都超出了我目前的理解。
我正在尝试在 shell 中执行命令并同时通过管道输出进行过滤。
相关代码如下所示:
import os
n=raw_input("enter cmd")
os.system(n + ' | grep x')
结果是
Syntax error: Redirection unexpected.
它在 ubuntu 上,似乎网上的一些参考资料提到了这一点,但没有一个我可以直接关联。似乎 subprocess 可能会有所帮助,但大多数例子都超出了我目前的理解。
使用subprocess模块而不是已弃用的 os.system。
subprocess允许根据需要管道和捕获标准输出。
process = subprocess.call(command_string.split(), ..., stdout=subprocess.PIPE, ...)
... handle your output from process.communicate()
在 Ubuntu 中,默认的 shell 是dash
,如果你以 开始一行,这就是它给你的错误|
,所以我猜你没有在n
.
os.system()
现在已弃用。该subprocess
模块功能更强大,更受欢迎。您将不得不花一些时间来阅读有关它的文档,但它得到了回报。它有一些方便的“便利功能”来减少所需的工作。
你从 shell 得到一个错误,而不是 python。你很可能没有输入命令,所以系统调用只有“|grep x”,它会返回这样的错误。