Python调用系统命令的四种方法

一、os.system(commandString)

import os
statusCode=os.system("powershell sleep 3 ;echo 天下大势为我所控")
print("over",statusCode)
  • 这里使用了powershell来执行sleep命令,在cmd里面是没有sleep命令的。
  • 会发现os.system(commandString)是阻塞的。
  • 这个函数类似C语言里面的stdlib.h中的system命令
  • 这种方法只负责运行程序并获取程序结束状态值,无法获取输出,输出会直接打印到stdout,所以要想获取输出也可以重定向一下stdout,然而没有这个必要,可以用下面的方法。

二、os.popen(commandString)

这种方法已经不鼓励使用了

import os
pipe=os.popen("powershell sleep 3 ;echo 天下大势为我所控")
s=pipe.read()
print(s)

这种方法直接接受运行的输出结果,这种方法的缺点是无法获取程序的结束状态。

你道好玩不好玩,os.system()只获取状态不获取输出,os.popen()只获取输出不获取状态,它们各有用武之地。
但是,肯定有一种方法能够同时获取这两者。

三、使用commands模块

这个模块在Python3中已经废弃了

import commands
(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status,output

四、鼓励使用:subprocess

subprocess模块主要有四个方法:

  • call
  • check_call
  • check_output
  • Popen
import subprocess
statusCode=subprocess.call("echo one",shell=True)#相当于system命令,只返回状态值,并打印输出到stdout
print(statusCode)
x=subprocess.check_call(["echo","  two"],shell=True)
print(x)
x=subprocess.check_output("echo three",shell=True)#只获取output
print(x)
import subprocess

obj = subprocess.Popen("mkdir t3", shell=True, cwd='/home/dev',)     #在cwd目录下执行命令
import subprocess

obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
obj.stdin.write("print(1)\n")
obj.stdin.write("print(2)")
obj.stdin.close()

cmd_out = obj.stdout.read()
obj.stdout.close()
cmd_error = obj.stderr.read()
obj.stderr.close()

print(cmd_out)
print(cmd_error)
import subprocess

obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
obj.stdin.write("print(1)\n")
obj.stdin.write("print(2)")

out_error_list = obj.communicate()
print(out_error_list)
import subprocess

obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
out_error_list = obj.communicate('print("hello")')
print(out_error_list)
时间: 2024-10-07 23:18:55

Python调用系统命令的四种方法的相关文章

Python调用系统命令的6种方法

Python调用系统命令的6种方法在Python中调用系统命令一般使用os或者subprocess模块,下面介绍Python中最常用的6种调用系统命令的方法.1.os.system()该函数返回命令执行结果的返回值,system()函数在执行过程中进行了以下三步操作:1.fork一个子进程:2.在子进程中调用exec函数去执行命令:3.在父进程中调用wait(阻塞)去等待子进程结束.返回0表示命令执行成功,其他表示失败.用法:os.system("command")2.os.popen

测试:python调用cmd命令三种方法

目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中"exit 1"的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的返回值是0×100,换算为10进制得到256. 如果我们需要获得os.system的正确返回值,那使用位移运算可以还原返回值: >>>

python 调用shell命令三种方法

#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里. python调用shell命令的方法有许多 1.1   os.system(command) 在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态.这实际上是使用C标准库函数system()实现的.这个函数在执行comman

Python执行Linux系统命令的四种方法

(1) os.system 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 system(command) -> exit_status Execute the command (a string) in a subshell. 如果再命令行下执行,结果直接打印出来 >>> os.system('ls') 04101419778.CHM   bash      document    media      py-django   video 11.wmv       

Python遍历字典的四种方法对比

#!/usr/bin/python from time import clock l = [(x,x) for x in xrange (10000000)] d = dict(l) t0 = clock() # 方法一 for i in d: n = d[i] t1 = clock() # 方法二:最慢 for k,v in d.items(): n = v t2 = clock() # 方法三: 最快,推荐方法 for k,v in d.iteritems(): n = v t3 = clo

Jquery调用webService的四种方法

1.编写4种WebService方法 [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] //令WebService成功传入Json参数,并以Json形式返回结果 [GenerateScriptType(typeof(Person))] //不是必要,但推荐添加(如果Person里面再嵌套

python执行系统命令的四种方式

一.os模块 1. os.system('cmd') 在子终端运行系统命令,不能获取命令执行后的返回信息以及执行返回的状态 import os os.system('date') # 2016年 06月 30日 星期四 19:26:21 CST OS.system 2. os.popen(cmd) 不仅执行命令而且返回执行后的信息对象(常用于需要获取执行命令后的返回信息) ,读取结果是使用read方法,是阻塞模式,一旦读取到结果再次读取的时候返回内容为空. import os nowtime =

Python格式化输出的四种方法

#!/usr/bin/env python #coding:utf-8 name = raw_input("name:") sex = raw_input("sex:") age = int(raw_input("age:")) info0 = ''' -------- inio fo0 ------- name: ''' + name + ''' sex: ''' + sex + ''' age: ''' + str(age) print in

python执行系统命令的几种方法

pass #!/usr/bin/env python import os,commands a = os.system('ls /mnt') print 'a:',a print '------------------------------' (status, output) = commands.getstatusoutput('ls /mnt') print 'status:',status, print 'output:',output print '------------------