Python—执⾏系统命令的四种⽅法(os.system、os.popen、
command。。。
⼀、os.system⽅法
这个⽅法是直接调⽤标准C的system() 函数,仅仅在⼀个⼦终端运⾏系统命令,⽽不能获取命令执⾏后的返回信息。
os.system(cmd)的返回值。如果执⾏成功,那么会返回0,表⽰命令执⾏成功。否则,则是执⾏错误。
使⽤os.system返回值是脚本的退出状态码,该⽅法在调⽤完shell脚本后,返回⼀个16位的⼆进制数,低位为杀死所调⽤脚本的信号号码,⾼位为脚本的退出状态码。
os.system()返回值为0 linux命令返回值也为0。
os.system()返回值为256,⼗六位⼆进制数⽰为:00000001,00000000,⾼⼋位转成⼗进制为 1 对应 linux命令返回值 1。
os.system()返回值为512,⼗六位⼆进制数⽰为:00000010,00000000,⾼⼋位转成⼗进制为 2 对应 linux命令返回值 2。
import os
result = os.system('cat /etc/passwd')
print(result) # 0
⼆、os.popen⽅法
shell脚本返回执行结果os.popen()⽅法不仅执⾏命令⽽且返回执⾏后的信息对象(常⽤于需要获取执⾏命令后的返回信息),是通过⼀个管道⽂件将结果返回。通过 os.popen()返回的是 file read 的对象,对其进⾏读取 read() 的操作可以看到执⾏的输出。
import os
result = os.popen('cat /etc/passwd')
ad())
三、commands模块
import commands
status = status('cat /etc/passwd')
print(status)
output = utput('cat /etc/passwd')
print(output)
(status, output) = statusoutput('cat /etc/passwd')
print(status, output)
四、subprocess模块
Subprocess是⼀个功能强⼤的⼦进程管理模块,是替换os.system ,os.spawn* 等⽅法的⼀个模块。
当执⾏命令的参数或者返回中包含了中⽂⽂字,那么建议使⽤subprocess。
import subprocess
res = subprocess.Popen('cat /etc/passwd', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) # 使⽤管道
# print ad() # 标准输出
for line in adlines():
print line
res.stdout.close() # 关闭
五、总结:
os.system:获取程序执⾏命令的返回值。
os.popen:获取程序执⾏命令的输出结果。
commands:获取返回值和命令的输出结果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论