关于python调用cmd命令,主要介绍两种方式:
一、Python的OS模块
OS模块调用CMD命令有两种方式:os.system(),os.popen()。 都是用当前进程来调用。
1、os.system()
a、简单粗暴的执行cmd指令
b、返回结果为0表示执行成功,无法获取命令输出的内容,本在cmd输出的内容会直接在控制台输出。
c、当命令运行结束后接着往下面执行程序(同步阻塞式)。用法如:os.system("ipconfig")。
2、os.popen()
a、能获取DOS命令输出的内容。
b、os.popen()返回的是一个file对象,那么可以跟打开文件一样操作,r是以读的方式打开。
c、当命令运行结束后接着往下面执行程序(同步阻塞式)。
注意:os.popen() 方法用于从一个命令打开一个读写管道,在Unix,Windows中有效。
用法如:
with os.popen(r"adb devices","r")as f:
text = f.read()
print(text)# cmd输出结果
二、管道subprocess模块
a、在当前进程下产生子进程。
b、用wait()函数等待结果(异步非阻塞式)。
【方法1】
result = subprocess.check_output(r'adb devices') ## 命令执行的输出结果放到了result里
print(result)
【方法2】
process = subprocess.Popen(r'adb devices',shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
command_output = process.stdout.read().decode('gbk')
print(command_output)
Notices:
有些命令行是异步执行的不会马上返回输出,所以有时候我们要先等这个命令行执行完毕才能从stdout读出来数据。这个时候要加上
process.wait()
我的GitHub
Ⅱ 怎么在Python交互式命令行中运行脚本
话不多说
直接上代码:
#encoding:utf-8
__author__='zhanghe'
importsys
deftest():
"""
命令行测试python调用自定义方法
"""
printsys.argv
try:
iflen(sys.argv)>1:
fun_name=eval(sys.argv[1])
fun_name()
else:
print'缺失参数'
exceptNameError,e:
printe
print'未定义的方法[%s]'%sys.argv[1]
deffuck():
print'Thisisatest!'
if__name__=='__main__':
test()
"""
sys.argv[0]文件名
sys.argv[1]命令行输入的参数1
sys.argv[2]命令行输入的参数2
测试用例:
$python/home/zhanghe/code/python/test/test_sys_arg.py
$python/home/zhanghe/code/python/test/test_sys_arg.pyfuc
$python/home/zhanghe/code/python/test/test_sys_arg.pyfuck
"""
https://github.com/zhanghe06/python/blob/master/test/test_sys_arg.py
Ⅲ python如何在DOS窗口运行,类似菜鸟麻烦大神详解
首先需要将Python加入到系统变量中
然后在点击开始>运行>输入cmd打开命令提示符
Ⅳ 怎样做到dos运行python程序时直接输入参数
ddd.py a b c
在程序里这样得到a b c
args = sys.argv
a = args[1]
...
Ⅳ python文件执行路径问题
如果程序需要使用一些配置文件时,一般也是用相对路径的,这样也容易出问题,这时需要在启动程序时切换到程序所在的路径。
sys.path[0] 是程序所在的目录,在程序开头处加上 os.chdir(sys.path[0]) 就可以了。
如果是使用 py2exe 打包的程序,sys.path[0] 值是 路径名\library.zip , 再处理一下这个就可以:
ddir = sys.path[0]
if os.path.isfile(ddir):
ddir,filen = os.path.split(ddir)
os.chdir(ddir)