python执行cmd命令。
import subprocess
def execute(cmd):
'''
cmd命令执行,获取管道内容
:param cmd:
:return:
'''
p1 = subprocess.Popen(cmd, shell=True)
return p1
if __name__ == '__main__':
cmd = 'ls /home/alice/Django|wc -l'
b = execute(cmd)
print(b)
print(type(b))
c = int(c)
print(c)
执行后,你会发现b的类型是subprocess.Popen,是一个进程而且无法转换为整型。无法进行比较。 那么如何才能得到,输出的结果,并将输出的结果作为参数,用于比较和传参。 ** 思路:进程间的通信是通过管道传递到主进程,或者其他进程,我们可以设计从管道中获取数据,将数据输出出来。具体执行如下。**
import subprocess
def execute(cmd):
'''
cmd命令执行,获取管道内容
:param cmd:
:return:
'''
result = []
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while True:
buff = proc.stdout.readline().decode(encoding="utf8")
if buff == '' and proc.poll() is not None:
break
else:
result.append(buff)
proc.stdout.close()
proc.wait()
return int(result[0])
if __name__ == '__main__':
cmd = 'ls /home/alice/Django|wc -l'
b = execute(cmd)
print(type(b))
if b == 3:
print("the result is Ture")
else:
print("The result is False")
这时,执行cmd命令后,输出的数目就可以进行比较和使用了。
|