1

我正在尝试在 shell 中执行命令并同时通过管道输出进行过滤。

相关代码如下所示:

import os
n=raw_input("enter cmd")
os.system(n + ' | grep x')

结果是

Syntax error: Redirection unexpected.

它在 ubuntu 上,似乎网上的一些参考资料提到了这一点,但没有一个我可以直接关联。似乎 subprocess 可能会有所帮助,但大多数例子都超出了我目前的理解。

4

3 回答 3

2

使用subprocess模块而不是已弃用的 os.system

subprocess允许根据需要管道和捕获标准输出。

process = subprocess.call(command_string.split(), ..., stdout=subprocess.PIPE, ...) 

... handle your output from process.communicate()
于 2011-08-28T21:49:57.593 回答
1

在 Ubuntu 中,默认的 shell 是dash,如果你以 开始一行,这就是它给你的错误|,所以我猜你没有在n.

os.system()现在已弃用。该subprocess模块功能更强大,更受欢迎。您将不得不花一些时间来阅读有关它的文档,但它得到了回报。它有一些方便的“便利功能”来减少所需的工作。

于 2011-08-28T21:49:06.817 回答
0

你从 shell 得到一个错误,而不是 python。你很可能没有输入命令,所以系统调用只有“|grep x”,它会返回这样的错误。

于 2011-08-28T21:42:37.993 回答