返回

长春达内教育

在python脚本中执行shell命令的方法

python学习网更新时间:2021-10-29 浏览:119

应用Python解决一个shell命令或一个实行一个shell脚本制作,一般状况下,有下列三种方式 ,下列大家看来:

第壹种方式 是应用os.system的方式

os.system(“ cmd”)

我们在文件列表下边建立一个aaa.sql的文档,文档中的內容是aaa,随后让我们看来检测全过程

1[root@ /data ]$python

2Python 2.7.15 (default, Nov 29 2018, 13:37:34)

3[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2

4Type "help", "copyright", "credits" or "license" for more information.

5>>> import os

6>>> os.system('cat aaa.sql')

7aaa

80

9>>> os.system('cat bbb.sql')

10cat: bbb.sql: No such file or directory

11256

能够得到这些方式 应用shell命令打印出出去aaa.sql中的內容,随后下边发现的数字0意味着以上指令运行取得成功;如果我们打印出bbb.sql则传参是256,表明实行中出現了难题。

第二种方式 是应用commands.getstatusoutput()方式

commands.getstatusoutput(“ cmd”)

大家看来检测結果:


1[root@ /data]$python

2Python 2.7.15 (default, Nov 29 2018, 13:37:34)

3[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2

4Type "help", "copyright", "credits" or "license" for more information.

5>>> import commands

6>>> commands.getstatusoutput('pwd')

7(0, '/data')

8>>> commands.getstatusoutput('pwddddd')

9(32512, 'sh: pwddddd: command not found')

10>>> exit()

在我们实行shell命令pwd的情况下,commands.getstatusputput传参是0,也就是实行取得成功,回到結果是目前的文件目录;当实行pwddddd的情况下,因为并不是DOS命令,因此回到結果是指令找不到,传参是32512

见到这儿,很有可能大伙儿有一个疑惑,便是这二种办法都能够回到实行結果,他们有何不一样?看下面的检测


1os的方式 只有获得传参,实行結果无法保存

2>>> import os

3>>> a=os.system('cat aaa.sql')

4aaa

5>>> print a

60

7>>> a,b=os.system('cat aaa.sql')

8aaa

9Traceback (most recent call last):

10 File "", line 1, in11TypeError: 'int' object is not iterable

12

13commands的方式 就可以立即获得传参和运行結果

14>>> import commands

15>>> a=commands.getstatusoutput('cat aaa.sql')

16>>> print a

17(0, 'aaa')

18>>> a,b=commands.getstatusoutput('cat aaa.sql')

19>>> print a

200

21>>> print b

22aaa

换句话说,commands.getstatusoutput的方式 ,能够收到一个脚本制作或一个指令的传参和运行結果,自然,大家还可以应用下边的办法来各自校正aaa.sql文件是不是存有,并查看aaa.sql的运行結果:


1[root@ /data]$python

2Python 2.7.15 (default, Nov 29 2018, 13:37:34)

3[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2

4Type "help", "copyright", "credits" or "license" for more information.

5>>> commands.getoutput('cat aaa.sql')

6'aaa'

7>>> commands.getstatus('aaa.sql')

8'-rw-r--r-- 1 root root 4 Dec 10 20:36 aaa.sql'

拥有里面的基本,我们可以很便捷的写下如下所示编码,把脚本制作的运行結果和传参开展储存,依据脚本制作实行的效果来确认最后的传参:


1cmd = "/bin/sh /data/scripts/test.sh %s" % para

2status, res = commands.getstatusoutput(cmd)

3MYLOGGER.logger.info(status,res)

4MYLOGGER.logger.info("cmd do finished,result is [%s],[%s]" % (str(status),str(res)))

5if status == 0:

6 result["result"] = res.split('n')[-1]

7else:

8 result["result"] = false

9 result["message"] = res

10return Response(result)

假如脚本制作中是对数据库查询的一系列实际操作,那麼运用python和数据表实现互动也就顺理成章了。

第三种方式 是应用popen函数

os.popen()回到的是file read的目标,开展开展载入read()的使用能够见到实行的輸出


1[root@ /data]$python

2Python 2.7.15 (default, Nov 29 2018, 13:37:34)

3[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2

4Type "help", "copyright", "credits" or "license" for more information.

5>>> import os

6>>> output = os.popen('cat aaa.sql')

7>>> print output.read()
8aaa

相关资讯

Python操作Excel教程:average函数求平均值的算法
2021-10-30 926
Python操作Excel教程-average函数求平均值...
人工智能和创客教育有什么区别
2022-11-05 890
人工智能和创客教育有什么区别对于人工智能,教育工作者首先要了解和接触这些技术,然后在课堂上介绍给学生。在这个过程中,教师...
怎么用热力图实现Python数据可视化
2021-10-28 822
大数据可视化是计算机科学或深度学习新项目中十分特别的一环。一般,你需要在工程前期开展探究性的数据统计分析(EDA),进而对信息有一定的掌握,并且建立数据可视化的确能够使剖析的目的更清楚...
Python的基础语法
2021-11-03 520
编写Paython程序流程以前*对英语的语法有一定的掌握,才可以编写标准的Python程序流程...
人工智能在制造业的生产中可以发挥哪些作用
2021-06-12 490
人工智能在制造业的生产中可以发挥的作用共分为7项,分别是:1、预测性和预防性维护;2、提高机器人的效能;3、制造供应链;...
二维密度图实现Python可视化的方法
2021-10-28 481
二维密度图(2D Density Plot)是一维版本号密度图的形象化拓展,相对性于一维版本号,其特点是可以见到有关2个自变量的概率分布函数...
Python操作Excel教程:提取Excel工作表的名字并修改的方法
2021-10-30 411
Python操作Excel教程-提取Excel工作表的名字并修改...
怎么运行python
2023-01-10 403
怎么运行python1. 使用Python自带的IDLE在开始--程序--Python2.5(视你安装的版本而不同)中找到IDLE(Python GUI),点击后弹出如下...

相关课程

栏目导航