我想从stdin中读取前100行,将其转换为数据帧,然后对其进行一些处理。然后从stdin读取接下来的100行(101-200),将其转换为数据帧,进行一些处理......等等
python中的readlines()没有任何参数来指定要读取的行数。
R中的readLines()有这个但是我无法在python中做同样的事情。感谢您的任何帮助。
答案 0 :(得分:0)
尝试使用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
答案 1 :(得分:0)
如果你想要vanilla Python 3,你可以做
import sys
lines = [line for _,line in zip(range(200),sys.stdin)]