六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

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

Python如何獲取Linux管道輸出

時(shí)間: 林澤1002 分享

Python如何獲取Linux管道輸出

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

  Python如何獲取Linux管道輸出

  工具/原料

  Linux平臺(tái)

  基本知識(shí)

  1你需要使用sys.stdin.read來(lái)獲取管道的輸入。

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

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

  你可能會(huì)問(wèn)為什么多了一個(gè)空行。這是因?yàn)閑cho本身會(huì)給文本加換行符,而print函數(shù)又加了一個(gè)。給print一個(gè)end=""參數(shù)就可以了。

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

  END

  實(shí)戰(zhàn)演練

  假如你想要一個(gè)腳本來(lái)給輸出的行數(shù)計(jì)數(shù),怎么寫(xiě)?

  例如: ls | count

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

  代碼如下圖:

  主要看第6、7行:

  bi = sys.stdin.buffer.read()

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

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

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

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

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


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

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

2.如何用Python寫(xiě)Linux命令

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

4.python版本低怎么升級(jí)

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

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

3084712