Python執行命令行

背景

咱們知道,雖然會破壞平臺獨立性,可是有的時候須要在代碼裏面調用命令行來獲取一些信息,那麼瞭解在 Python 中如何執行命令行相當重要 shell

使用介紹

Python 中使用命令行能夠經過 subprocess  來實現,好比執行一個簡單的 ls 命令數組

    r = subprocess.call(["ls"])

執行事後,會在標準輸出上顯示當前目錄下的文件spa

注意若是有重定向或者管道符等比較複雜的命令應該使用 sh -c '命令行'命令行

    r = subprocess.call(["sh", "-c", 'ls; echo ;ls | grep init'])

若是這麼寫code

    r = subprocess.call(['ls; echo ;ls | grep init'])

這是後會報 ls; echo ;ls | grep init 文件找不到,這個方法執行,會將列表的第一個字符串做爲參數,其餘的做爲參數,因此這裏這麼寫就會將整個字符串看成命令了,天然找不到這個命令文件,同理若是參數後面出現管道符,重定向等符號,由於是直接做爲參數傳給命令,因此並不能正常工做,由於這些符號是 shell 語法,命令並不能識別,所以要解決這個問題只可以使用 sh -c string,這條語法就是讓 shell 來直接執行字符串 string 所表明的命令,由於直接是由 shell 解釋器來執行的,就不會出現這些問題了blog

擴展

Java 中使用命令行,通常是使用字符串

Runtime.getRuntime().exec()

傳入的是字符串數組,用法原理和 Python 同樣get

相關文章
相關標籤/搜索