我们想通过python脚本运行以下shell命令(我们使用python版本2.7)
echo hadoop-hdfs-namenode - 2.6.4.0-91| grep hadoop-hdfs-namenode | awk '{print $NF}' | awk '{printf "%.1f\n", $NF}'
2.6
因此,我创建以下python脚本以获取结果-2.6
import os
os.system("echo hadoop-hdfs-namenode - 2.6.4.0-91| grep hadoop-hdfs-namenode | awk '{print $NF}' | awk '{printf "%.1f\n", $NF}' ")
但是当我运行它时,我们得到了
os.system("echo hadoop-hdfs-namenode - 2.6.4.0-91| grep hadoop-hdfs-namenode | awk '{print $NF}' | awk '{printf "%.1f\n", $NF}' ")
^
SyntaxError: invalid syntax
是否可以通过python运行此复杂的shell? ,以获得预期的结果-2.6
以及如何修复我的语法?
答案 0 :(得分:4)
转义"
和\n
: os.system("echo hadoop-hdfs-namenode - 2.6.4.0-91| grep hadoop-hdfs-namenode | awk '{print $NF}' | awk '{printf \" %.1f\\n \", $NF}' ")
。
作为旁注,os.system
将在子shell中执行命令(字符串)并返回命令的返回代码,如果需要输出,请查看子流程模块:https://docs.python.org/3/library/subprocess.html