摘要:不再推薦使用老的等方法來(lái)調(diào)用系統(tǒng)命令,而建議統(tǒng)一使用庫(kù)所對(duì)應(yīng)的方法如。推薦并記錄一些常用的使用范例標(biāo)準(zhǔn)用法使用數(shù)據(jù)傳參,可以用庫(kù)來(lái)正確切割命令字符串使用語(yǔ)句替代下由于的入?yún)樽址枰演斎氲臄?shù)組拼接為字符串。
Python 3不再推薦使用老的os.system()、os.popen()、commands.getstatusoutput()等方法來(lái)調(diào)用系統(tǒng)命令,而建議統(tǒng)一使用subprocess庫(kù)所對(duì)應(yīng)的方法如:Popen()、getstatusoutput()、call()。
推薦并記錄一些常用的使用范例:
Popen# 標(biāo)準(zhǔn)用法使用數(shù)據(jù)傳參,可以用shlex庫(kù)來(lái)正確切割命令字符串 >>> import shlex, subprocess >>> command_line = input() /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo "$MONEY"" >>> args = shlex.split(command_line) >>> print(args) ["/bin/vikings", "-input", "eggs.txt", "-output", "spam spam.txt", "-cmd", "echo "$MONEY""] >>> p = subprocess.Popen(args) # Success!
import subprocess try: proc = subprocess.Popen([`ls`, `-a`, `/`], stdout=subprocess.PIPE) print(proc.stdout.read()) except: print("error when run `ls` command")
# 使用with語(yǔ)句替代try-except-finally with Popen(["ifconfig"], stdout=PIPE) as proc: log.write(proc.stdout.read())
# Windows下由于Windows API的CreateProcess()入?yún)樽址?# Popen需要把輸入的數(shù)組拼接為字符串。因此建議直接傳入字符串參數(shù)。 p = subprocess.Popen("D:ToolsGitgit-bash.exe --cd="D:Codes"", stdout=subprocess.PIPE) print(p.stdout.read())call
import subprocess try: retcode = subprocess.call("mycmd" + " myarg", shell=True) if retcode < 0: print("Child was terminated by signal", -retcode, file=sys.stderr) else: print("Child returned", retcode, file=sys.stderr) except OSError as e: print("Execution failed:", e, file=sys.stderr)getstatusoutput/getoutput
>>> subprocess.getstatusoutput("ls /bin/ls") (0, "/bin/ls") >>> subprocess.getoutput("ls /bin/ls") "/bin/ls"
詳細(xì)可以查閱Python 3官方文檔:
os: https://docs.python.org/3/library/os.htm...
subprocess: https://docs.python.org/3/library/subpro...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/37850.html
摘要:為了安裝科學(xué)計(jì)算環(huán)境,控制好版本,今天上午總算折騰好了。切換和使用新的虛擬環(huán)境這樣就能切換為這個(gè)版本的虛擬環(huán)境。通過(guò)輸入查看現(xiàn)在版本,可以發(fā)現(xiàn)處于虛擬環(huán)境下了。指定包的版本多個(gè)版本并存,尤其是和的并存。下面用創(chuàng)建一個(gè)名叫的版本為的環(huán)境。 為了安裝Anaconda科學(xué)計(jì)算環(huán)境,控制好python版本,今天上午總算折騰好了。 學(xué)習(xí)python有時(shí)希望在python2.7環(huán)境下,有時(shí)希望在...
摘要:返回的信息特定于當(dāng)前線程以及當(dāng)前堆棧幀。出于某些原因,這個(gè)值可能無(wú)法計(jì)算,將返回返回安卓版本的構(gòu)建時(shí)間,以整數(shù)表示。僅適用于安卓平臺(tái)返回解釋器的檢查間隔。可操作此屬性實(shí)現(xiàn)強(qiáng)制重新加載模塊等。 sys模塊提供對(duì)由解釋器使用或維護(hù)的某些變量、與解釋器交互的函數(shù)的訪問(wèn)接口。 sys.abiflags 在使用標(biāo)準(zhǔn)configure腳本構(gòu)建python的POSIX系統(tǒng)上,該屬性包含了PEP 31...
摘要:執(zhí)行命令的方法模塊方式說(shuō)明這個(gè)調(diào)用相當(dāng)直接,且是同步進(jìn)行的,程序需要阻塞并等待返回。返回值是依賴于系統(tǒng)的,直接返回系統(tǒng)的調(diào)用返回值,所以和是不一樣的。并能夠獲得新建進(jìn)程運(yùn)行的返回狀態(tài)。使用模塊的目的是替代等舊的函數(shù)或模塊。 python執(zhí)行shell命令的方法 os模塊 os.system方式: import os os.system(top) os.system(cat /proc...
摘要:一什么是模塊中,一個(gè)文件就稱之為一個(gè)模塊。所有的內(nèi)置函數(shù)為避免模塊名沖突,又引入了按目錄來(lái)阻止模塊沖突的方法,稱為包。例如下列小程序以自建的模塊,編寫(xiě)一個(gè)的模塊。如果在其他地方導(dǎo)入該模塊時(shí),判斷將失敗,即僅在此模塊單獨(dú)運(yùn)行時(shí)生效。 一、什么是模塊 Python中,一個(gè).py文件就稱之為一個(gè)模塊。那么使用模塊有什么好處呢? (1)提高了代碼的可維護(hù)性。(2)代碼不必從零開(kāi)始,當(dāng)一個(gè)模塊...
閱讀 2971·2023-04-25 17:46
閱讀 3598·2021-11-25 09:43
閱讀 1102·2021-11-18 10:02
閱讀 3060·2021-10-14 09:43
閱讀 2779·2021-10-13 09:40
閱讀 1531·2021-09-28 09:35
閱讀 2191·2019-08-30 15:52
閱讀 3164·2019-08-30 14:06