關於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)