python +通过python脚本运行复杂的shell命令

时间:2020-07-08 11:15:30

标签: python linux python-2.7

我们想通过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

以及如何修复我的语法?

1 个答案:

答案 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