微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python中编写一个unixfilter?

我想写一个程序,读取标准input(无缓冲),并写入标准输出(无缓冲)做一些简单的逐字符转换。 为了这个例子,让我们说我想从标准input删除所有的字符x 。

如何设置和查询Ndis虚拟微型端口驱动程序的组播地址?

文件筛选器驱动程序页面文件

文件系统filter驱动程序 – 拒绝文件创build

截取文件文件夹I O没有API挂钩或filter驱动程序

是否有可能从日志中删除一些键值对?

我不确切地知道你在这方面缓冲的意思,但是做你正在问的事很简单。

so_gen.py(生成一个可以观看的常量流):

import time import sys while True: for char in 'abcdefx': sys.stdout.write(char) sys.stdout.flush() time.sleep(0.1)

so_filter.py(按照你的要求):

import sys while True: char = sys.stdin.read(1) if not char: break if char != 'x': sys.stdout.write(char) sys.stdout.flush()

尝试运行python so_gen.py | python so_filter.py python so_gen.py | python so_filter.py来看看它做了什么。

从sys.stdin读取并写入sys.stdout (或使用print )。 您的示例程序:

import sys for line in sys.stdin: print line.replace("x",""),

没有一个标准的方式来使stdin无缓冲,你不想这样做。 让OS缓冲它。

您可以使用fileinput类 ,它允许您像Perl钻石操作员那样处理输入。 从文档:

import fileinput for line in fileinput.input(): process(line)

在哪里进程做一些像print line.replace('x','') 。

你可以按照这个StackOverflow的问题 ,如何解除标准输出。 或者您可以在每次print后调用sys.stdout.flush() 。

使用-u开关为python解释器使所有读取和写入无缓冲。 类似于设置$| = true; $| = true; 在Perl中。 然后继续,读取一行修改它,然后打印它。 sys.stdout.flush()不是必需的。

#!/path/to/python -u import sys for line in sys.stdin: process_line(line)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐