本文摘自php中文网,作者anonymity,侵删。
Python 3的更新已经有一段时间了,相比较于Python2也有许多不同的改变,Python 3 在Linux中也是利用比较多的,这里主要实践了一些Python3利用Linux的脚本执行命令。
首先,如果只需要执行,或者只需要得到执行的状态可以用 os.system 调用
1 2 3 4 5 6 | print ( 'hello,world' )
import os
val2 = os.system( 'cd trb && cd trb' )
val3 = os.system( 'ls' )
print ( 'val2 is ' ,val2)
|
上述代码。如果val2内代码执行成功,即有两级trb文件夹,则val2 的值是0 否则是256
两行调用没有继承性,如果要连续执行就在一个语句里加 && (Shell 语法)
在print之前,屏幕还会显示执行的结果
1 2 3 | hello,worldsh: line 0: cd: trb: 没有那个文件或目录
Abcd.py automesh.sh Cal_Ori fold.txt Linux_py_temp.py meshedjob.rec new_geom onc143314 trb
val2 is 256
|
os.popen(cmd)方法,只能得到运行的输出,但是如果不print屏幕上就什么也没有。
例如
1 2 | val4 = os.popen( 'cd trb && cd trb' )
val5 = os.popen( 'ls' ) print ( '开始PRINT' ) print (val4.read()) print (val5.read())
|
显示如下
1 2 3 4 5 6 7 8 9 10 | hello,world
开始 PRINT /bin/sh: line 0: cd: trb: 没有那个文件或目录
Abcd.py
automesh.shCal_Ori
fold.txt
Linux_py_temp.py
meshedjob.rec
new_geom
onc143314
trb
|
这里输出是类文件的对象,要调用read或者readlines读取也可以用来遍历。
############
终极武器,subprocess
py3.5后建议使用的模块subprocess
网上教程里的commands 是2里的功能,在3里被删除,但是可以通过subprocess调用
有以下命令:
subprocess.
getstatusoutput
(cmd )
在shell中返回执行cmd。(status, output) 返回2个元素的元组
3.4之后添加win支持
subprocess.
getoutput
(cmd )
执行cmd然后返回结果
1 2 | legacycmd = subprocess.getstatusoutput( 'ls -l' ) print ( 'subprocess.getstatusoutput 输出' ,legacycmd)
legacycmd2 = subprocess.getoutput( 'ls -l' ) print ( 'subprocess.getoutput 输出' ,legacycmd2)
|
上面为代码
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | subprocess.getstatusoutput 输出 (0, '总用量 48\n-rwxr--r-- 1 para036 bjpara 516 4月 16 2018 Abcd.py\n-rwxr--r-- 1 para036 bjpara 1619 4月 16 16:58 automesh_onpsn_fortest.sh\n-rwxr--r-- 1 para036 bjpara 1616 4月 15 14:31 automesh.sh\ndrwxr-xr-x 5 para036 bjpara 4096 4月 15 14:31 Cal_Ori\n-rw-r --r-- 1 para036 bjpara 32 4月 16 16:56 fold.txt\n-rwxr--r-- 1 para036 bjpara 1530 4月 15 14:45 Linux_py_temp.py\n-rw-r--r-- 1 para036 bjpara 27 4月 15 14:43 meshedjob.rec\ndrwxr-xr-x 2 para036 bjpara 4096 4月 15 14:31 new_geom\ndrwxr-xr-x 5 para036 bjpara 4096 4月 15 14:51 onc143314\ndrwx r-xr-x 5 para036 bjpara 4096 4月 16 17:05 onc16165650\ndrwxr-xr-x 5 para036 bjpara 4096 4月 16 16:46 onc163840\ndrwxr-xr-x 2 para036 bjpara 4096 4 月 15 14:32 trb' )
subprocess.getoutput 输出 总用量 48
-rwxr--r-- 1 para036 bjpara 516 4月 16 2018 Abcd.py
-rwxr--r-- 1 para036 bjpara 1619 4月 16 16:58 automesh_onpsn_fortest.sh
-rwxr--r-- 1 para036 bjpara 1616 4月 15 14:31 automesh.sh
drwxr-xr-x 5 para036 bjpara 4096 4月 15 14:31 Cal_Ori
-rw-r--r-- 1 para036 bjpara 32 4月 16 16:56 fold .txt
-rwxr--r-- 1 para036 bjpara 1530 4月 15 14:45 Linux_py_temp.py
-rw-r--r-- 1 para036 bjpara 27 4月 15 14:43 meshedjob.rec
drwxr-xr-x 2 para036 bjpara 4096 4月 15 14:31 new_geom
drwxr-xr-x 5 para036 bjpara 4096 4月 15 14:51 onc143314
drwxr-xr-x 5 para036 bjpara 4096 4月 16 17:05 onc16165650
drwxr-xr-x 5 para036 bjpara 4096 4月 16 16:46 onc163840
drwxr-xr-x 2 para036 bjpara 4096 4月 15 14:32 trb
|
其中output是字符串。如果不print就不显示
阅读剩余部分
相关阅读 >>
Python教程之django视频资料分享
Python怎么导出eps文件
Python怎么转换数据类型
Python中argparse库的基本使用(示例)
Python中str是什么意思
Python爬虫需要安装什么
Python能画3d图吗
怎样在windows下快速完成web.py开发框架的搭建
Python中下划线怎么打
Python中如何在一个函数中加入多个装饰器
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » 利用python3实现Linux的脚本功能