什麼是從標準輸入讀取並輸出每第n個字節的最簡單有效的方法? 我想要一個在OS X上運行的命令行工具,並且寧願避免compiled languages。輸出標準輸入的每第n個字節
這Python腳本是相當慢(25秒爲一個3GB的文件,當n = 100000000):
#!/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個字節進行採樣。
只需讀取系統上的3GB文件需要多長時間? (確保它不在磁盤緩存中) – NPE 2014-11-08 23:03:32
讀取整個文件很慢,但我對n很大的情況感興趣。例如,我想從二進制文件中抽取500個字節。 – tba 2014-11-08 23:12:06
這並不一定會增加太多。例如,讀取磁盤上的每個第500個字節的文件很可能與讀取整個文件一樣慢。 – NPE 2014-11-08 23:19:30