學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦安全 > 系統(tǒng)安全 > Python如何獲取Linux管道輸出

Python如何獲取Linux管道輸出

時間: 林澤1002 分享

Python如何獲取Linux管道輸出

  ls | grep a 就把ls的輸出結(jié)果放到grep中處理,尋找含有字母a的項。Python的腳本怎么樣才能獲得類似的效果?下面是學(xué)習(xí)啦小編收集整理的Python如何獲取Linux管道輸出,希望對大家有幫助~~

  Python如何獲取Linux管道輸出

  工具/原料

  Linux平臺

  基本知識

  1你需要使用sys.stdin.read來獲取管道的輸入。

  看下圖的代碼。之所以沒有寫出文本,是希望讀者能自己寫一遍,而不是復(fù)制粘貼。自己動手寫一遍必看10遍還更容易記住。

  2然后用echo命令把輸出傳給這個腳本。

  你可能會問為什么多了一個空行。這是因為echo本身會給文本加換行符,而print函數(shù)又加了一個。給print一個end=""參數(shù)就可以了。

  即,print("來自Python的:", sys.stdin.read(), end="")

  END

  實戰(zhàn)演練

  假如你想要一個腳本來給輸出的行數(shù)計數(shù),怎么寫?

  例如: ls | count

  就把ls的個數(shù)顯示出來,你就知道有多少個文件或文件夾了。

  代碼如下圖:

  主要看第6、7行:

  bi = sys.stdin.buffer.read()

  由于考慮到文件名的編碼可能不是utf-8,所以直接read可能出現(xiàn)亂碼(準(zhǔn)確地說,不是亂碼,而是UnicodeDecodeError,程序根本運行不下去),所以使用了buffer,它的含義是以字節(jié)形式讀取輸出,而不是字符。

  li = bi.split(b"\n")[:-1]

  以b“\n”為分隔符分了之后,最后一項的空字節(jié),所以要切掉最后一項。

  不要擔(dān)心沒有分成幾行的ls的輸出,經(jīng)過測試,即使輸出是一行,它們之間也是用b"\n"分割的。

  把腳本改名為 count,放入 ~/bin 后測試一下。


Python如何獲取Linux管道輸出相關(guān)文章:

1.Linux下用Python獲取命令行輸出的幾個方案

2.如何用Python寫Linux命令

3.局域網(wǎng)python封裝linux監(jiān)控模塊

4.python版本低怎么升級

5.Linux 命令more/less文件和目錄管理

6.python調(diào)用外部exe程序

3084712