我想从文件中读取第25到55行,但是当它应该是30行时,范围似乎只输出一个数字和6行。
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"]
答案 0 :(得分:4)
使用内置enumerate
功能:
for i, line in enumerate(hamlettext):
if i in range(25, 55):
print(i)
print(line)
答案 1 :(得分:2)
您可以完全读取文件然后切片以获取行列表:
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)
来修复那是正确的。
答案 2 :(得分:-2)
所以上面代码中的i
正在打印最后一行。要读取25到55之间的所有行,您需要在循环内打印数据。
hamlettext = open('hamlet.txt', 'r')
for i in range (25,55):
data = hamlettext.readlines(i)
print(i)
print(data)