Python-从文本文件中获取行,x-y行

Python-从文本文件中获取行,x-y行,python,Python,获取文本文件前10行的方法可以通过以下方式完成: with open("myfile.txt") as myfile: lines = [next(myfile).strip() for x in xrange(10)] 这将打印前10行 但是如果我只想要第5-10行呢?我该怎么做? 这个文件不小,它会很大。我需要一个有效的方法来做到这一点 谢谢。将您已有的列表切片如何 with open("myfile.txt") as myfile: lines = [next(m

获取文本文件前10行的方法可以通过以下方式完成:

with open("myfile.txt") as myfile:
        lines = [next(myfile).strip() for x in xrange(10)]
这将打印前10行

但是如果我只想要第5-10行呢?我该怎么做? 这个文件不小,它会很大。我需要一个有效的方法来做到这一点


谢谢。

将您已有的列表切片如何

with open("myfile.txt") as myfile:
    lines = [next(myfile).strip() for x in xrange(10)][5:10]

到目前为止,最简单的方法是:

它的好处在于它永远不会加载整个文件;它只做它需要做的工作


请注意,
itertools
中的函数是惰性的,因此您需要在关闭文件之前完成对这些行的处理,或者将
islice
包装在
list()
中以强制求值。

如果您知道从何处开始,只需更改for循环中的范围即可

var1 = 5
var2 = 10
for x in range(var1, var2):

将从5循环到10,当然您可以进一步调整变量。

我会这样做:

>>> with open("myfile.txt") as myfile:
>>>  lines = myfile.read().split('\n')[5:10]
Split将逐行将其分离为一个行数组,[5:10]将返回从5到10的数组元素,变量“lines”将是一个数组,但是,为了只获得一个从5到10的行字符串,您可以:

>>> with open("myfile.txt") as myfile:
>>>  lines = '\n'.join(myfile.read().split('\n')[5:10])

这里唯一的区别是“\n”.join()部分,它只获取行数组中的每个元素,并将它们连接成一个由换行符分隔的字符串。

读取文件并将x到y行作为列表到内容变量:

with open('content.txt') as f:
    content=f.read().split('\n')[x-1:y]

注意“\n”和“\r\n”。

是的,这个问题的
islice
解决方案就是这样,imo:
lines=[line.strip(),用于islice中的行(myfile,5,11)]
这里缺少一个小点。文件没有操作拆分。因此,我们已经阅读了内容,然后分割和剪切线。
with open('content.txt') as f:
    content=f.read().split('\n')[x-1:y]