首页 > 编程语言 > 详细

Python 执行 Shell 命令

时间:2020-09-19 01:02:59      阅读:78      评论:0      收藏:0      [点我收藏+]
system
import os
status = os.system("ls -l")

os.system 创建子进程在系统上执行命令,只能获取命令的返回状态,命令的输出结果会直接打到 console 上
比如 status = os.system("ls -l")
如果执行成功 status 的值就是 0,但是 list 的内容是直接打到 console 而无法取到值

popen
import os
f = os.popen("ls -l")
f.read()            ## 返回所有输出
f.readline()        ## 返回输出的下一行
f.readlines()       ## 返回输出的剩下的所有行

popen 无法得到命令的返回状态,只能获取命令的输出

subprocess.Popen

os.popen 实际是对 subprocess.Popen 的封装,可以直接使用 subprocess.Popen

import subprocess

f = subprocess.Popen("ls -l", 
                     shell=True,
                     stdout=subprocess.PIPE,
                     stdin=subprocess.PIPE,
                     stderr=subprocess.PIPE,
                     universal_newlines=True)

f.stdout.read()
f.stdout.readline()
f.stdout.readlines()

f = subprocess.Popen("python", shell=True,
                     stdout=subprocess.PIPE,
                     stdin=subprocess.PIPE,
                     stderr=subprocess.PIPE,
                     universal_newlines=True)

f.stdin.write("print(\"test\")")     ## 可以和命令进行交互
f.stdin.close()
f.stdout.read()

subprocess 在 python2 和 python3 提供的函数有区别,但 Popen 的功能是一样的

commands

只用在 python2,在 python3 会被 subprocess 替代

import commands
commands.getoutput("ls -l")           ## 只获得输出
commands.getstatusoutput("ls -l")     ## 获得输出,还有返回状态

有 getstatus 命令,但似乎用不了,并不是获取返回状态

subprocess

python3 的 subprocess 添加了一些函数,用以取代 commands

import subprocess
subprocess.getoutput("ls -l")           ## 获得输出
subprocess.getstatusoutput("ls /")      ## 获得输出,还有返回状态


Python 执行 Shell 命令

原文:https://www.cnblogs.com/moonlight-lin/p/13694112.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!