[英]How to read a chunk of lines that match a starting pattern from a file in Python?
[英]How to read fixed chunk of lines (say 100) from stdin in python?
我想從stdin讀取前100行,將其轉換為數據幀,並對其進行一些處理。 然后從stdin讀取下100行(101-200),將其轉換為數據幀,進行一些處理...依此類推
python中的readlines()沒有任何參數來指定要讀取的行數。
R中的readLines()具有此功能,但是我無法在python中執行相同的操作。
感謝任何幫助。
嘗試使用sys.stdin
。 它具有一個文件界面,這與unix的哲學相符。 這意味着您可以對其進行迭代以獲取行。 在那之后,您只需要像任何迭代器一樣對其進行切片-我建議itertools https://docs.python.org/2/library/itertools.html 。
import sys
import itertools
CHUNK_LENGTH = 200
lines_chunk = itertools.islice(sys.stdin, CHUNK_LENGTH)
更好的是,使用itertools配方進行分組,並獲得可迭代的塊(請參見上面的鏈接)
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
chunks_of_200 = grouper(sys.stdin, CHUNK_LENGTH, fillvalue="")
for chunk_of_200 in chunks_of_200:
# do something with chunk
如果您想要香草Python 3,則可以
import sys
lines = [line for _,line in zip(range(200),sys.stdin)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.