python運行命令_對python中執行DOS命令的3種方法總結

1. 使用os.system("cmd")

特點是執行的時候程序會打出cmd在Linux上執行的信息。

import os

os.system("ls")

2. 使用Popen模塊產生新的process

現在大部分人都喜歡使用Popen。Popen方法不會打印出cmd在linux上執行的信息。的確,Popen非常強大,支持多種參數和模式。使用前需要from subprocess import Popen, PIPE。但是Popen函數有一個缺陷,就是它是一個阻塞的方法。如果運行cmd時產生的內容非常多,函數非常容易阻塞住。解決辦法是不使用wait()方法,但是也不能獲得執行的返回值了。

Popen原型是:

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)

參數bufsize:指定緩沖。

參數executable用于指定可執行程序。一般情況下我們通過args參數來設置所要運行的程序。如果將參數shell設為 True,executable將指定程序使用的shell。在windows平臺下,默認的shell由COMSPEC環境變量來指定。

參數stdin, stdout, stderr分別表示程序的標準輸入、輸出、錯誤句柄。他們可以是PIPE,文件描述符或文件對象,也可以設置為None,表示從父進程繼承。

參數preexec_fn只在Unix平臺下有效,用于指定一個可執行對象(callable object),它將在子進程運行之前被調用。

參數Close_sfs:在windows平臺下,如果close_fds被設置為True,則新創建的子進程將不會繼承父進程的輸入、輸出、錯誤管 道。我們不能將close_fds設置為True同時重定向子進程的標準輸入、輸出與錯誤(stdin, stdout, stderr)。

如果參數shell設為true,程序將通過shell來執行。

參數cwd用于設置子進程的當前目錄。

參數env是字典類型,用于指定子進程的環境變量。如果env = None,子進程的環境變量將從父進程中繼承。

參數Universal_newlines:不同操作系統下,文本的換行符是不一樣的。如:windows下用'/r/n'表示換,而Linux下用 ‘/n'。如果將此參數設置為True,Python統一把這些換行符當作'/n'來處理。

參數startupinfo與createionflags只在windows下用效,它們將被傳遞給底層的CreateProcess()函數,用 于設置子進程的一些屬性,如:主窗口的外觀,進程的優先級等等。

subprocess.PIPE

在創建Popen對象時,subprocess.PIPE可以初始化stdin, stdout或stderr參數,表示與子進程通信的標準流。

subprocess.STDOUT

創建Popen對象時,用于初始化stderr參數,表示將錯誤通過標準輸出流輸出。

Popen的方法:

Popen.poll()

用于檢查子進程是否已經結束。設置并返回returncode屬性。

Popen.wait()

等待子進程結束。設置并返回returncode屬性。

Popen.communicate(input=None)

與子進程進行交互。向stdin發送數據,或從stdout和stderr中讀取數據。可選參數input指定發送到子進程的參數。 Communicate()返回一個元組:(stdoutdata, stderrdata)。注意:如果希望通過進程的stdin向其發送數據,在創建Popen對象的時候,參數stdin必須被設置為PIPE。同樣,如 果希望從stdout和stderr獲取數據,必須將stdout和stderr設置為PIPE。

Popen.send_signal(signal)

向子進程發送信號。

Popen.terminate()

停止(stop)子進程。在windows平臺下,該方法將調用Windows API TerminateProcess()來結束子進程。

Popen.kill()

殺死子進程。

Popen.stdin

如果在創建Popen對象是,參數stdin被設置為PIPE,Popen.stdin將返回一個文件對象用于策子進程發送指令。否則返回None。

Popen.stdout

如果在創建Popen對象是,參數stdout被設置為PIPE,Popen.stdout將返回一個文件對象用于策子進程發送指令。否則返回 None。

Popen.stderr

如果在創建Popen對象是,參數stdout被設置為PIPE,Popen.stdout將返回一個文件對象用于策子進程發送指令。否則返回 None。

Popen.pid

獲取子進程的進程ID。

Popen.returncode

獲取進程的返回值。如果進程還沒有結束,返回None。

例如:

p = Popen("cp -rf a/* b/", shell=True, stdout=PIPE, stderr=PIPE)

p.wait()

if p.returncode != 0:

print "Error."

return -1

3. 使用commands.getstatusoutput方法

這個方法也不會打印出cmd在linux上執行的信息。這個方法唯一的優點是,它不是一個阻塞的方法。即沒有Popen函數阻塞的問題。使用前需要import commands。

例如:

status, output = commands.getstatusoutput("ls")

還有只獲得output和status的方法:

commands.getoutput("ls")

commands.getstatus("ls")

以上這篇對python中執行DOS命令的3種方法總結就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。

本文標題: 對python中執行DOS命令的3種方法總結

本文地址: http://www.cppcns.com/jiaoben/python/227834.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533764.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533764.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533764.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android studio 不生成buildconfig,Android Studio Update 0.4.0找不到buildConfig()

將Android Studio升級到版本0.4.0后,出現了一個新錯誤:我通過gradle-wrapper.properties升級到gradle 1.9distributionUrlhttp\://services.gradle.org/distributions/gradle-1.9-all.zip并升級了build.gradle中的gradle版本dependencies {classpath com…

譚民機器人_機器人視覺伺服研究進展-中科院自動化所-譚民.

文章編號:100220446(2004 0320277206機器人視覺伺服研究進展Ξ王麟琨,徐德,譚民(中國科學院自動化研究所復雜系統與智能科學實驗室,北京100080摘要:,針對當前機器人視覺伺服所面臨的主要問題, .關鍵詞:機器人;視覺伺服;綜述中圖分類號::Survey of R esearch on Robotic Visual …

mysql 按月和年累加_廣西柳州市市場監管局公布市2020年11月(第一批)電梯按需維保試點名單...

中國質量新聞網訊 根據《柳州市改進電梯維護保養模式試點工作方案》,近日,廣西柳州市市場監管局公布柳州市首批按需維保試點電梯名單,冠亞藍灣國際小區和南慶安置小區共46臺電梯成為首批試點電梯,標志著柳州市全面啟動了按需維保改…

python默認深拷貝_Python 深拷貝與淺拷貝

首先分享Python里面的數據類型1、不可變類型:Number(數字)、String(字符串)、Tuple(元組)。不可變數據類型在第一次聲明賦值的時候, 會在內存中開辟一塊空間, 用來存放這個變量被賦的值, 而這個變量實際上存儲的, 并不是被賦予的這個值, 而是存放這個值所在空間的內…

上傳 mp4 格式判斷_視頻如何轉換成通用的MP4格式?按下這個鍵,10秒就能搞定...

我們在網上下載視頻的時候,有很多的視頻都是無法播放的,或者是需要特定的播放器才可以播放。其實,只要把這些視頻的格式轉換成通用的MP4格式即可。如果你還不知道怎么轉換視頻格式,下面就教大家兩個小方法,百試百靈。一…

android不能在主線程,安卓開發:主線程真的不能做UI操作嗎?這一點很多程序員都沒想到...

只要參與過安卓項目開發一兩年的朋友們應該清楚,為了避免UI渲染出現異常安卓框架限制UI操作只能在主線程中進行,如果貿然在子線程做了UI操作結果會怎樣?我們隨便寫下了如下測試代碼。不出意外的話,代碼執行報錯拋出了名為CalledFr…

c++注釋快捷鍵_Jupyter Notebook amp; Lab快捷鍵大全

Jupyter有兩種模式,命令模式和編輯模式,分別有不同的快捷鍵。編輯模式(按鍵 Enter 切換):可以往單元中鍵入代碼或文本,此時單元格被藍色的框線包圍,且命令模式下的快捷鍵不生效; 命令模式 (按鍵 Esc 開啟)&…

多核cpu應用場景_CPU占用100%!PC卡頓原來可以這么解決:多場景多任務也流暢

現代生活里,不論是工作還是生活,多開軟件和處理事務可以說都是家常便飯的事情。一邊玩著醉心已久的游戲,一邊解壓著新的電影和游戲;為了查詢資料,一不小心打開了數十個網頁;復雜繁重的工作鑄就了動輒上百兆…

swot分析法案例_項目型銷售案例剖析的五大步驟

我們的案例分析方式是根據哈佛大學與中歐國際工商學院的案例分析方法來總結出我們的模式的。這種分析方法包括兩種互相關聯和依賴的方面。第一方面,就是要對所指定的將供集體討論的案例,做出深刻而有意義的分析,包括找出案例所描述的情景中存…

autojs 云控_autojs websocket 核心示例代碼,云控技術

//初始化方法function recordInit(scriptName){//let ipInfoJson getIP()// let ip ipInfoJson.cip// let location ipInfoJson.cnamelet deviceIMEI ,deviceBrand,deviceModel,AndroidVer,deviceWH,deviceBoard,deviceMac,AndroidIdtry {deviceBrand device.brand;//制造…

定時器和promise_從Promise鏈理解EventLoop

面試題new Promise(resolve > { setTimeout(()>{ console.log(666); new Promise(resolve > { resolve(); }) .then(() > {console.log(777);}) }) resolve(); }) .then(() > { new Promise(resolve > { resolve(); …

ugui源碼_UGUI整體解決方案基礎篇(Unity 2019)

課程介紹:本課程是UGUI系列課程的第一篇:基礎篇主要是講解UGUI的基礎組件及接口的使用方法,目前UGUI是unity最常用的UI系統,這部分基礎只是是每個同學都應該掌握的,這里我就是簡單的講解了用法,大家對UGUI熟…

android 實例源碼解釋,Android Handler 原理分析及實例代碼

Android Handler 原理分析Handler一個讓無數android開發者頭疼的東西,希望我今天這邊文章能為您徹底根治這個問題今天就為大家詳細剖析下Handler的原理Handler使用的原因1.多線程更新Ui會導致UI界面錯亂2.如果加鎖會導致性能下降3.只在主線程去更新UI,輪詢處理Handl…

amd cpu排行_最新intel和amd處理器性能排行cpu天梯圖2019

現在市面上cpu廠家有很多,比如常見的intel系列的、amd系列CPU,cpu對電腦起著至關重要的作用,所以我們需要知道cpu性能的好壞,為此小編這就給大家帶來最新intel和amd處理器性能排行對比天梯圖,大家可以了解一下吧。inte…

python中的對象列表_Python內建的對象列表

Python內建的對象列表剛寫Python肯定會遇到這樣的情況,想寫些什么,但又不知從何寫起...在我看來問題在于我們不知道有什么東東可以拿來玩,這里列出Python的內建對象,稍微歸類了一下,多看幾遍代碼自然筆上生花&#xff…

電腦會顯示android,怎么在電腦上顯示、操作安卓手機

想要在電腦上顯示、操作安卓手機,該怎么辦,那么怎么在電腦上顯示、操作安卓手機的呢?下面是學習啦小編收集整理的怎么在電腦上顯示、操作安卓手機,希望對大家有幫助~~在電腦上顯示、操作安卓手機的方法工具/原料windows操作系統安卓手機電腦…

git version是什么軟件_Deepin 15.11 安裝 ZoneMinder 視頻監控軟件

Zoneminder是一款開源的視頻監控軟件,可以很方便的連接ip攝像頭。因計劃將家中的監控攝像頭引入NAS,在一臺deepin系統的筆記本是先進行了測試。UBUNTU和debian系統都是很容易安裝這個軟件的。未來在NAS上用docker啟動一個專門的zoneminder,do…

看不出svp補幀_專業補幀軟件SVP4 實現PotPlayer視頻補幀教程

雖然能實現幀率翻倍,不過現在視頻絕大多數都是24幀或25幀,翻倍也才48幀,沒辦法實現補幀后達到60幀的效果。SVP4是一款專業版視頻補幀軟件,提供GPU加速,并允許使用中檔CPU和幾乎任何GPU硬件為60Hz的FullHD 1080p視頻重新…

android 通知歷史,Android P新特性:追蹤應用通知歷史

原標題:Android P新特性:追蹤應用通知歷史IT之家3月9日消息 不久前,谷歌已經正式推出了首個Android P開發者預覽版,包含了許多新特性。對此,IT之家也進行了一系列報道。該系統的新特性也正在不斷被發現。例如最新消息顯…

文件另存為時名稱會改變_易經:人處在困境時,不要焦慮,改變固定習慣,就會迎來轉機...

我讀《易經》,悟到一些規律:人的一生,起起落落,時而順利,時而受困,都是正常現象,沒有必要把困難和壓力看得太重。人處在困境時,不要焦慮,只要改變你的固定習慣&#xff0…