How to read a specific range of lines in an extern

2020-04-21 04:04发布

Lets say you have a python file with 50 lines of code in it, and you want to read a specific range lines into a list. If you want to read ALL the lines in the file, you can just use the code from this answer:

with open('yourfile.py') as f:
    content = f.readlines()

print(content)

But what if you want to read a specific range of lines, like reading line 23-27?

I tried this, but it doesn't work:

f.readlines(23:27)

3条回答
做自己的国王
2楼-- · 2020-04-21 04:36

If there are lots and lots of lines in your file, I believe you should consider using f.readline() (without an s) 27 times, and only save your lines starting wherever you want. :)

Else, the other ones solution is what I would have done too (meaning : f.readlines()[23:28]. 28, because as far as I remember, outer range is excluded.

查看更多
forever°为你锁心
3楼-- · 2020-04-21 04:44

You were close. readlines returns a list and you can slice that, but it's invalid syntax to try and pass the slice directly in the function call.

f.readlines()[23:27]

If the file is very large, avoid the memory overhead of reading the entire file:

start, stop = 23, 27
for i in range(start):
    next(f)
content = []
for i in range(stop-start):
    content.append(next(f))
查看更多
▲ chillily
4楼-- · 2020-04-21 04:50

Try this:

sublines = content[23:27]
查看更多
登录 后发表回答