获取文本文件前10行的方法可以这样做:
with open("myfile.txt") as myfile:
lines = [next(myfile).strip() for x in xrange(10)]
这将打印前10行
但是如果我只想要5-10行呢?我该怎么办? 该文件不小,它会变大。我需要一种有效的方法来做到这一点。
谢谢。
答案 0 :(得分:1)
到目前为止,最简单的方法是使用itertools.islice
:
with open('myfile.text') as f:
lines = islice(f, 5, 11)
关于这一点的好处是它不会加载整个文件;它只会做所需的工作。
请注意itertools
中的函数是惰性的,因此您需要在关闭文件之前使用行完成工作,或者将islice
包装在{ {1}}强制进行评估。
答案 1 :(得分:0)
如何切割已有的列表。
with open("myfile.txt") as myfile:
lines = [next(myfile).strip() for x in xrange(10)][5:10]
答案 2 :(得分:0)
如果您知道要开始的位置,只需更改for循环中的范围即可。
var1 = 5
var2 = 10
for x in range(var1, var2):
会从5循环到10,当然你可以进一步调整你的变量。
答案 3 :(得分:0)
我做这样的事情:
>>> 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()部分,它只占用行数组的每个元素,并将它们连接成一个由换行符分隔的字符串。
答案 4 :(得分:0)
读取文件并将第x行作为列表添加到内容变量:
with open('content.txt') as f:
content=f.read().split('\n')[x-1:y]
照顾' \ n'和' \ r \ n'。