readline() 跳过源文件中的行
我有一个.txt文件,里面有很多行。
当我用一个循环来逐行处理的时候,发现它跳过了一些行。
它跳过了第一行,从第二行开始,然后打印第四行、第六行,等等。
我到底漏掉了什么呢?
def main():
# Open file line_numbers.txt
data_file = open('line_numbers.txt', 'r')
# initialize accumulatior
count = 1
# Read all lines in data_file
for line in data_file:
# Get the data from the file
line = data_file.readline()
# Display data retrieved
print(count, ": ", line)
# add to count sequence
count += 1
3 个回答
4
这段代码for line in data_file
已经帮你获取了每一行的文本,接下来再调用readline就会获取到下一行。换句话说,如果你去掉readline的调用,就能达到你想要的效果。同时,你也不需要自己去管理一个累加器变量,Python有一个内置的方法可以做到这一点,使用enumerate
就可以了。也就是说:
data_file = open('line_numbers.txt', 'r')
for count, line in enumerate(data_file):
...
11
你的for循环正在遍历data_file,而你的readline()方法正在和它争抢资源。为了得到这个结果,删除代码中的line = data_file.readline()
这一行:
# Read all lines in data_file
count = 1
for line in data_file:
# Display data retrieved
print(count, ": ", line)
# add to count sequence
count += 1
12
试着把“line=data_file.readline()”这一行完全去掉?我觉得“for line in data_file:”也是在读取一行内容。