python调用cmd命令用了两个模块:
1.python的OS模块。
OS模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用。
os.system是无法获取返回值的。当运行结束后接着往下面执行程序。用法如:OS.system ("ipconfig").
? ? ? ?os.chdir(目录名)用来变更命令行目录
? ? ? ?变量名=os.getcwd()获得当前目录
OS.popen带返回值的,如何获取返回值。如
import os
aa="ping 192.168.0.107"
f = os.popen(aa, 'r')
aaa=f.readlines()
for line in aaa: #按行遍历
line = line.strip('\r\n')
print(line)
上边代码可以执行
import os
aa="ping 192.168.0.107"
f = os.popen(aa, 'r')
#d=f.read()
#print(d)
上边代码也可以执行
#如果要是变更命令行执行目录如下:
import os
path="E:/功能测试/aa"
os.chdir(path)
aa="python aaa.py"
b=os.getcwd()
f = os.popen(aa, 'r')
print(b)
#d=f.read()
#print(d)
aaa=f.readlines()
for line in aaa: #按行遍历
line = line.strip('\r\n')
print(line)
2.管道subprocess模块。
? ? ? ?用system.os()执行cmd命令有一点坑,cmd命令没有执行完,就直接跳到下一步了,百度了一下,大概是因为运行cmd命令时创建了另一个进程来执行,推荐使用subprocess模块。而system.os()一次性的程序。
? ? ? 下列代码运行ping IP地址 -t ? ? ? 能够完整在命令行处于等待状态。 ?
import subprocess
cmd='ping 192.168.255.92 -t'
p=subprocess.Popen(cmd,shell=True)
return_code=p.wait() #等待子进程结束,并返回状态码;
该模块的具体说明网址https://www.runoob.com/w3cnote/python3-subprocess.html subprocess模块的的打开固定目录的命令行方法是,在Popen方法中的cwd参数
示例如下:
import subprocess
cmd='python aaa.py'
p=subprocess.Popen(cmd,shell=True,cwd="E:/功能测试/aa")
return_code=p.wait() #等待子进程结束,并返回状态码;
|