Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中从stdin读取固定的行块(比如100行)?_Python_Python 2.7_Stdin_Readline - Fatal编程技术网

如何在python中从stdin读取固定的行块(比如100行)?

如何在python中从stdin读取固定的行块(比如100行)?,python,python-2.7,stdin,readline,Python,Python 2.7,Stdin,Readline,我想从stdin中读取前100行,将其转换为数据帧,并对其进行一些处理。然后从stdin读取下一个100行101-200,将其转换为数据帧,进行一些处理…等等 python中的readlines没有任何参数来指定要读取的行数 R中的readLines有这个功能,但我无法在python中实现同样的功能 感谢您的帮助。尝试使用sys.stdin。它有一个文件接口,符合unix的原理。这意味着您可以对其进行迭代以获得行。之后,您只需像任何迭代器一样对其进行切片-我建议使用itertools 更好的方法

我想从stdin中读取前100行,将其转换为数据帧,并对其进行一些处理。然后从stdin读取下一个100行101-200,将其转换为数据帧,进行一些处理…等等

python中的readlines没有任何参数来指定要读取的行数

R中的readLines有这个功能,但我无法在python中实现同样的功能

感谢您的帮助。

尝试使用sys.stdin。它有一个文件接口,符合unix的原理。这意味着您可以对其进行迭代以获得行。之后,您只需像任何迭代器一样对其进行切片-我建议使用itertools

更好的方法是,使用石斑鱼的itertools配方,并获得一个iterable块,请参见上面的链接

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)]

计数循环中的readline有什么问题?pandas库的许多read_*函数都有chunksize参数。
import sys
lines = [line for _,line in zip(range(200),sys.stdin)]