按编号输出特定行

Outputting specific lines by number

我想从文件中读取第25行到第55行,但是范围似乎只输出一个数字和6行,而应该是30行。

hamlettext = open('hamlet.txt', 'r')
for i in range (25,55):
    data = hamlettext.readlines(i)

print(i)
print(data)

输出:

54
['\n', 'Mar.\n', 'O, farewell, honest soldier;\n', "Who hath reliev'd you?\n"]

使用内置 enumerate 函数:

for i, line in enumerate(hamlettext):
    if i in range(25, 55):
        print(i)
        print(line)

所以上面代码中的 i 正在打印最后一行。要读取从 25 到 55 的所有行,您需要在循环内打印数据。

    hamlettext = open('hamlet.txt', 'r')
    for i in range (25,55):
        data = hamlettext.readlines(i)

        print(i)
        print(data)

您可以完整读取文件然后切片以获取行列表:

with open('hamlet.txt', 'r') as f:
    data = f.readlines()[25:55]

不过,如果文件很大,最好跳过 25 行,然后读取,然后跳出循环,以免白读一千行:

with open('hamlet.txt', 'r') as f:
    for i, line in enumerate(hamlettext):
        if i < 25:
           continue
        elif i >= 55:
           break
        else:
           print(i,line.rstrip())

另请注意,如果您使用文本编辑器比较行号,则会有 1 个偏移量(python 从 0 开始,编辑器从 1 开始,因此您可以使用 enumerate(hamlettext,1)正确修复它。