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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值