利用python3实现Linux的脚本功能


本文摘自php中文网,作者anonymity,侵删。

Python 3的更新已经有一段时间了,相比较于Python2也有许多不同的改变,Python 3 在Linux中也是利用比较多的,这里主要实践了一些Python3利用Linux的脚本执行命令。

首先,如果只需要执行,或者只需要得到执行的状态可以用 os.system 调用

1

2

3

4

5

6

#!/usr/bin/env python3

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.getstatusoutputcmd

在shell中返回执行cmd(status, output) 返回2个元素的元组

3.4之后添加win支持

subprocess.getoutputcmd

执行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如何读写json数据(代码)

Python函数中return后的语句执行不?

Python中json模块和pickle模块的简单介绍(附示例)

Python实现注册登录系统

vscode编写第一个Python程序helloworld步骤_Python

Python怎么卸载不了

Python安装的第三方库怎么更新

Python中几种常用字符串函数

Python基本语句有哪些

Python字典如何按value值排序

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...