python调用shell脚本

    今天在学习shell脚本的时候发现了一个很有意思的东西,就是可以使用python的os模块来间接地执行shell脚本程序或者shell命令,以前还真的是没有这么尝试过,今天就简单的操作一下看一下效果吧。

    首先,进入到我的目录下面的一个sort文件夹下面,这是我之前写的排序算法的小练习存放的目录:

[root@localhost sort]# ls
BubbleSort.py  MergeSort.py      test.py
dui1.py        p.py              total.py
dui.py         QuickSort.py      说明read me.txt
five.py        SelectionSort.py
InsertSort.py  ShellSortSort.py

    接下来输入python进入命令行界面:

>>> import os
>>> os.popen('ls')
<open file 'ls', mode 'r' at 0x7f47ebb1b030>
>>> os.popen('python dui.py')
<open file 'python dui.py', mode 'r' at 0x7f47ebb1b0c0>

    简单的演示了一下使用os.popen().函数的操作结果。

>>> result = os.popen('python dui.py')
>>> import pprint
>>> pprint.pprint(result)
<open file 'python dui.py', mode 'r' at 0x7f47ebb1b030>
>>> print result
<open file 'python dui.py', mode 'r' at 0x7f47ebb1b030>
    可以使用print函数或者pprint模块来进行输出。
    当然可以使用它来干很多的事比如:

   

>>> import os
>>> print os.system('ls')
BubbleSort.py  MergeSort.py	 test.py
dui1.py        p.py		 total.py
dui.py	       QuickSort.py	 说明read me.txt
five.py        SelectionSort.py
InsertSort.py  ShellSortSort.py
0
>>> print os.system('mkdir aaa')
0
>>> print os.system('ls')
aaa	       InsertSort.py	 ShellSortSort.py
BubbleSort.py  MergeSort.py	 test.py
dui1.py        p.py		 total.py
dui.py	       QuickSort.py	 说明read me.txt
five.py        SelectionSort.py
0
    其中,返回值中的0表示命令执行成功的状态,关于os.system(cmd)的返回值查阅了资料后有如下的解释:

 

os.system()返回值为0                      linux命令返回值也为0.
os.system()返回值为256,十六位二进制数示为:00000001,00000000,高八位转乘十进制为 1           对应   linux命令返回值 1
os.system()返回值为512,十六位二进制数示为:00000010,00000000,高八位转乘十进制为 2           对应   linux命令返回值 2
......其它同理
os.system()返回值为32512,十六位二进制数示为:01111111,00000000,高八位转乘十进制为 127          对应   linux命令返回值 127
........

或者简单说,linux命令返回码 左移8位,然后转换成十进制就变成了 os.system()函数的返回值了。
    接下来使用 os.system()来执行一下之前的排序算法,如下:

   

>>> print os.system('ls')
aaa	       dui1.py	five.py        MergeSort.py  QuickSort.py      ShellSortSort.py  total.py
BubbleSort.py  dui.py	InsertSort.py  p.py	     SelectionSort.py  test.py		 说明read me.txt
0
>>> 
>>> print os.system('python dui.py')
随机序列生成耗时: 0.000219106674194
堆排序结果为
[31, 51, 53, 54, 57, 78, 99, 102, 117, 120, 127, 148, 161, 201, 201, 214, 219, 220, 221, 244, 250, 256, 276, 278, 279, 289, 300, 305, 305, 308, 309, 323, 331, 337, 344, 347, 379, 386, 439, 461, 480, 501, 509, 530, 547, 553, 553, 555, 559, 559, 561, 565, 568, 584, 589, 589, 592, 609, 610, 611, 643, 644, 663, 681, 686, 688, 692, 695, 695, 704, 708, 732, 740, 748, 749, 761, 777, 780, 781, 806, 810, 812, 813, 814, 824, 826, 838, 839, 855, 871, 879, 884, 910, 922, 925, 953, 960, 962, 999, 1000]
堆排序总耗时: 0.000483989715576
归并排序结果为
[31, 51, 53, 54, 57, 78, 99, 102, 117, 120, 127, 148, 161, 201, 201, 214, 219, 220, 221, 244, 250, 256, 276, 278, 279, 289, 300, 305, 305, 308, 309, 323, 331, 337, 344, 347, 379, 386, 439, 461, 480, 501, 509, 530, 547, 553, 553, 555, 559, 559, 561, 565, 568, 584, 589, 589, 592, 609, 610, 611, 643, 644, 663, 681, 686, 688, 692, 695, 695, 704, 708, 732, 740, 748, 749, 761, 777, 780, 781, 806, 810, 812, 813, 814, 824, 826, 838, 839, 855, 871, 879, 884, 910, 922, 925, 953, 960, 962, 999, 1000]
归并排序总耗时: 0.00233292579651
快速排序结果为
[31, 51, 53, 54, 57, 78, 99, 102, 117, 120, 127, 148, 161, 201, 201, 214, 219, 220, 221, 244, 250, 256, 276, 278, 279, 289, 300, 305, 305, 308, 309, 323, 331, 337, 344, 347, 379, 386, 439, 461, 480, 501, 509, 530, 547, 553, 553, 555, 559, 559, 561, 565, 568, 584, 589, 589, 592, 609, 610, 611, 643, 644, 663, 681, 686, 688, 692, 695, 695, 704, 708, 732, 740, 748, 749, 761, 777, 780, 781, 806, 810, 812, 813, 814, 824, 826, 838, 839, 855, 871, 879, 884, 910, 922, 925, 953, 960, 962, 999, 1000]
快速排序总耗时: 0.00103998184204
0
>>> print os.system('python total.py')
Bubble_Sort --->运行时间:1.178026 ms
0
>>> print os.system('python test.py')
堆排序结果为
[-67, -2, 1, 3, 4, 5, 5, 6, 8, 9, 14, 23, 25, 89, 100]
[-67, -2, 1, 3, 4, 5, 5, 6, 8, 9, 14, 23, 25, 89, 100]
堆排序总耗时: 5.07831573486e-05
0
>>> print os.system('python five.py')
选择排序结果为:
[6, 13, 16, 16, 31, 96, 102, 119, 123, 125, 140, 145, 158, 168, 183, 185, 198, 207, 210, 222, 224, 239, 241, 257, 258, 272, 287, 303, 304, 307, 308, 308, 315, 316, 321, 324, 327, 329, 332, 371, 374, 376, 383, 393, 406, 421, 426, 431, 432, 434, 441, 443, 455, 469, 484, 504, 508, 514, 521, 522, 546, 565, 568, 591, 596, 613, 622, 628, 630, 632, 658, 671, 674, 688, 701, 707, 710, 718, 741, 742, 753, 772, 785, 796, 807, 816, 820, 867, 876, 878, 889, 896, 900, 923, 946, 951, 961, 976, 983, 1000]
快速排序结果为:
[6, 13, 16, 16, 31, 96, 102, 119, 123, 125, 140, 145, 158, 168, 183, 185, 198, 207, 210, 222, 224, 239, 241, 257, 258, 272, 287, 303, 304, 307, 308, 308, 315, 316, 321, 324, 327, 329, 332, 371, 374, 376, 383, 393, 406, 421, 426, 431, 432, 434, 441, 443, 455, 469, 484, 504, 508, 514, 521, 522, 546, 565, 568, 591, 596, 613, 622, 628, 630, 632, 658, 671, 674, 688, 701, 707, 710, 718, 741, 742, 753, 772, 785, 796, 807, 816, 820, 867, 876, 878, 889, 896, 900, 923, 946, 951, 961, 976, 983, 1000]
冒泡排序结果为:
[6, 13, 16, 16, 31, 96, 102, 119, 123, 125, 140, 145, 158, 168, 183, 185, 198, 207, 210, 222, 224, 239, 241, 257, 258, 272, 287, 303, 304, 307, 308, 308, 315, 316, 321, 324, 327, 329, 332, 371, 374, 376, 383, 393, 406, 421, 426, 431, 432, 434, 441, 443, 455, 469, 484, 504, 508, 514, 521, 522, 546, 565, 568, 591, 596, 613, 622, 628, 630, 632, 658, 671, 674, 688, 701, 707, 710, 718, 741, 742, 753, 772, 785, 796, 807, 816, 820, 867, 876, 878, 889, 896, 900, 923, 946, 951, 961, 976, 983, 1000]
直接插入排序结果为:
[6, 13, 16, 16, 31, 96, 102, 119, 123, 125, 140, 145, 158, 168, 183, 185, 198, 207, 210, 222, 224, 239, 241, 257, 258, 272, 287, 303, 304, 307, 308, 308, 315, 316, 321, 324, 327, 329, 332, 371, 374, 376, 383, 393, 406, 421, 426, 431, 432, 434, 441, 443, 455, 469, 484, 504, 508, 514, 521, 522, 546, 565, 568, 591, 596, 613, 622, 628, 630, 632, 658, 671, 674, 688, 701, 707, 710, 718, 741, 742, 753, 772, 785, 796, 807, 816, 820, 867, 876, 878, 889, 896, 900, 923, 946, 951, 961, 976, 983, 1000]
希尔排序结果为:
[6, 13, 16, 16, 31, 96, 102, 119, 123, 125, 140, 145, 158, 168, 183, 185, 198, 207, 210, 222, 224, 239, 241, 257, 258, 272, 287, 303, 304, 307, 308, 308, 315, 316, 321, 324, 327, 329, 332, 371, 374, 376, 383, 393, 406, 421, 426, 431, 432, 434, 441, 443, 455, 469, 484, 504, 508, 514, 521, 522, 546, 565, 568, 591, 596, 613, 622, 628, 630, 632, 658, 671, 674, 688, 701, 707, 710, 718, 741, 742, 753, 772, 785, 796, 807, 816, 820, 867, 876, 878, 889, 896, 900, 923, 946, 951, 961, 976, 983, 1000]
选择排序用时为: 0.000508069992065
快速排序用时为: 0.000910997390747
冒泡排序用时为: 0.000620126724243
直接插入排序用时为: 0.000463962554932
希尔排序用时为: 0.00741696357727
0
>>> print os.system('python BubbleSort.py')
第0轮:
[2, 3, 5, 7, 8, 6, 9, 1, 42, 54]
第1轮:
[2, 3, 5, 7, 6, 8, 1, 9, 42, 54]
第2轮:
[2, 3, 5, 6, 7, 1, 8, 9, 42, 54]
第3轮:
[2, 3, 5, 6, 1, 7, 8, 9, 42, 54]
第4轮:
[2, 3, 5, 1, 6, 7, 8, 9, 42, 54]
第5轮:
[2, 3, 1, 5, 6, 7, 8, 9, 42, 54]
第6轮:
[2, 1, 3, 5, 6, 7, 8, 9, 42, 54]
第7轮:
[1, 2, 3, 5, 6, 7, 8, 9, 42, 54]
第8轮:
[1, 2, 3, 5, 6, 7, 8, 9, 42, 54]
第9轮:
[1, 2, 3, 5, 6, 7, 8, 9, 42, 54]
冒泡排序之后结果为:
[1, 2, 3, 5, 6, 7, 8, 9, 42, 54]
python sorted()函数排序结果为:
[1, 2, 3, 5, 6, 7, 8, 9, 42, 54]
降序输出结果为:
[54, 42, 9, 8, 7, 6, 5, 3, 2, 1]
0
    相当于Linux下直接使用python命令来执行程序了,还是很不错的体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值