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