学习啦 > 学习电脑 > 电脑安全 > 系统安全 > Python如何获取Linux管道输出

Python如何获取Linux管道输出

时间: 林泽1002 分享

Python如何获取Linux管道输出

  ls | grep a 就把ls的输出结果放到grep中处理,寻找含有字母a的项。Python的脚本怎么样才能获得类似的效果?下面是学习啦小编收集整理的Python如何获取Linux管道输出,希望对大家有帮助~~

  Python如何获取Linux管道输出

  工具/原料

  Linux平台

  基本知识

  1你需要使用sys.stdin.read来获取管道的输入。

  看下图的代码。之所以没有写出文本,是希望读者能自己写一遍,而不是复制粘贴。自己动手写一遍必看10遍还更容易记住。

  2然后用echo命令把输出传给这个脚本。

  你可能会问为什么多了一个空行。这是因为echo本身会给文本加换行符,而print函数又加了一个。给print一个end=""参数就可以了。

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

  END

  实战演练

  假如你想要一个脚本来给输出的行数计数,怎么写?

  例如: ls | count

  就把ls的个数显示出来,你就知道有多少个文件或文件夹了。

  代码如下图:

  主要看第6、7行:

  bi = sys.stdin.buffer.read()

  由于考虑到文件名的编码可能不是utf-8,所以直接read可能出现乱码(准确地说,不是乱码,而是UnicodeDecodeError,程序根本运行不下去),所以使用了buffer,它的含义是以字节形式读取输出,而不是字符。

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

  以b“\n”为分隔符分了之后,最后一项的空字节,所以要切掉最后一项。

  不要担心没有分成几行的ls的输出,经过测试,即使输出是一行,它们之间也是用b"\n"分割的。

  把脚本改名为 count,放入 ~/bin 后测试一下。


Python如何获取Linux管道输出相关文章:

1.Linux下用Python获取命令行输出的几个方案

2.如何用Python写Linux命令

3.局域网python封装linux监控模块

4.python版本低怎么升级

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

6.python调用外部exe程序

3084712