摘要:不再推薦使用老的等方法來調用系統命令,而建議統一使用庫所對應的方法如。推薦并記錄一些常用的使用范例標準用法使用數據傳參,可以用庫來正確切割命令字符串使用語句替代下由于的入參為字符串,需要把輸入的數組拼接為字符串。
Python 3不再推薦使用老的os.system()、os.popen()、commands.getstatusoutput()等方法來調用系統命令,而建議統一使用subprocess庫所對應的方法如:Popen()、getstatusoutput()、call()。
推薦并記錄一些常用的使用范例:
Popen# 標準用法使用數據傳參,可以用shlex庫來正確切割命令字符串 >>> 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語句替代try-except-finally with Popen(["ifconfig"], stdout=PIPE) as proc: log.write(proc.stdout.read())
# Windows下由于Windows API的CreateProcess()入參為字符串, # Popen需要把輸入的數組拼接為字符串。因此建議直接傳入字符串參數。 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"
詳細可以查閱Python 3官方文檔:
os: https://docs.python.org/3/library/os.htm...
subprocess: https://docs.python.org/3/library/subpro...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37850.html
摘要:為了安裝科學計算環境,控制好版本,今天上午總算折騰好了。切換和使用新的虛擬環境這樣就能切換為這個版本的虛擬環境。通過輸入查看現在版本,可以發現處于虛擬環境下了。指定包的版本多個版本并存,尤其是和的并存。下面用創建一個名叫的版本為的環境。 為了安裝Anaconda科學計算環境,控制好python版本,今天上午總算折騰好了。 學習python有時希望在python2.7環境下,有時希望在...
摘要:返回的信息特定于當前線程以及當前堆棧幀。出于某些原因,這個值可能無法計算,將返回返回安卓版本的構建時間,以整數表示。僅適用于安卓平臺返回解釋器的檢查間隔。可操作此屬性實現強制重新加載模塊等。 sys模塊提供對由解釋器使用或維護的某些變量、與解釋器交互的函數的訪問接口。 sys.abiflags 在使用標準configure腳本構建python的POSIX系統上,該屬性包含了PEP 31...
摘要:執行命令的方法模塊方式說明這個調用相當直接,且是同步進行的,程序需要阻塞并等待返回。返回值是依賴于系統的,直接返回系統的調用返回值,所以和是不一樣的。并能夠獲得新建進程運行的返回狀態。使用模塊的目的是替代等舊的函數或模塊。 python執行shell命令的方法 os模塊 os.system方式: import os os.system(top) os.system(cat /proc...
摘要:一什么是模塊中,一個文件就稱之為一個模塊。所有的內置函數為避免模塊名沖突,又引入了按目錄來阻止模塊沖突的方法,稱為包。例如下列小程序以自建的模塊,編寫一個的模塊。如果在其他地方導入該模塊時,判斷將失敗,即僅在此模塊單獨運行時生效。 一、什么是模塊 Python中,一個.py文件就稱之為一個模塊。那么使用模塊有什么好處呢? (1)提高了代碼的可維護性。(2)代碼不必從零開始,當一個模塊...
閱讀 2970·2023-04-25 17:46
閱讀 3594·2021-11-25 09:43
閱讀 1100·2021-11-18 10:02
閱讀 3058·2021-10-14 09:43
閱讀 2776·2021-10-13 09:40
閱讀 1529·2021-09-28 09:35
閱讀 2190·2019-08-30 15:52
閱讀 3161·2019-08-30 14:06