国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學(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管道輸出,希望對大家有幫助~~

      Python如何獲取Linux管道輸出

      工具/原料

      Linux平臺(tái)

      基本知識(shí)

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

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

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

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

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

      END

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

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

      例如: ls | count

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

      代碼如下圖:

      主要看第6、7行:

      bi = sys.stdin.buffer.read()

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

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

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

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

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


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

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

    2.如何用Python寫Linux命令

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

    4.python版本低怎么升級

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

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

    3084712