python执行shell命令

1.不需要获取命令执行结果

os.system(command)

# -*- coding:utf-8 -*-
import os
command='adb devices'
tt=os.system(command)
print(tt)
print(type(tt))

输出结果为:

0
<class 'int'>

2.需要获取命令执行结果

tt=os.popen(command)

# -*- coding:utf-8 -*-
import os
command='adb devices'
tt=os.popen(command)
print(tt)
print(type(tt))
tmp=tt.read()
print(tmp)

输出结果为:

<os._wrap_close object at 0x000001F1B0607248>
<class 'os._wrap_close'>
List of devices attached
CVH7N16A12000234        device

总结:
python调用Shell脚本或者是调用系统命令,有两种方法:
1.os.system(cmd)
2.os.popen(cmd)
前者返回值是命令执行后的退出状态码,正常为0,异常为1
后者的返回值是脚本执行过程中的输出内容。

3.subprocess获取执行结果

st = subprocess.Popen('pwd', stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True).stdout.readline()
print(bytes.decode(st))
# /usr1

shell=True会模拟一个shell环境,可能存在外部注入的风险,因此需要修改为shell=False,并且执行的命令也需要需改为list格式

import shlex
import subprocess
subprocess.Popen(args=shlex.split(cmd),
                            shell=False,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE,
                            close_fds=True)

你可能感兴趣的:(python业务类,自动化测试,python)