gpt4 book ai didi

python - 输出标准输入的每第 n 个字节

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:45 25 4
gpt4 key购买 nike

从 stdin 读取并输出每第 n 个字节的最简单有效的方法是什么?我想要一个适用于 OS X 的命令行实用程序,并且希望避免使用 compiled languages .

这个 Python 脚本相当慢(当 n=100000000 时,一个 3GB 的文件需要 25 秒):

#!/usr/bin/env python
import sys
n = int(sys.argv[1])
while True:
chunk = sys.stdin.read(n)
if not chunk:
break
sys.stdout.write(chunk[0])

不幸的是,我们不能使用 sys.stdin.seek 来避免读取整个文件。

编辑:我想针对 n 占文件大小很大一部分的情况进行优化。例如,我经常使用此实用程序从一个大文件的等距位置采样 500 个字节。

最佳答案

注意:OP 将示例 n 从 100 更改为 100000000,这实际上使我的代码比他的代码慢,通常我会删除我的答案,因为它不再比原始示例好,但我的答案得到了投票,所以我将保持原样。


我能想到的让它更快的唯一方法是一次读取所有内容并使用 slice

#!/usr/bin/env python
import sys
n = int(sys.argv[1])
data = sys.stdin.read()
print(data[::n])

尽管如此,尝试将 3GB 文件装入 ram 可能是一个非常糟糕的主意

关于python - 输出标准输入的每第 n 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26823026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com