如何使用while循环遍历文本文件?

时间:2012-11-26 06:27:48

标签: python

如果我有一个文本文件:

     StudentA:
      10
      20
      30
      40

      StudentB:
      60
      70 
      80
      90

我想创建一个函数:

    def read_file(file,student):
        file=file.open('file.txt','r')

当我打电话时,

     read_file(file,StudentA)

它会显示如下列表:

    [10,20,30,40]

我怎么能用while循环呢?

2 个答案:

答案 0 :(得分:2)

我不确定您为什么要使用while阅读,for-loop会做得很好。但这是一种读取文件的pythonic方式。

with open(...) as f:
    for line in f:
        <do something with line>

with语句处理打开和关闭文件,包括是否在内部块中引发异常。 for line in f将文件对象f视为可迭代,它自动使用缓冲的IO和内存管理,因此您不必担心大文件。

答案 1 :(得分:1)

请记住,StackOverflow不是代码编写服务。通常情况下,我不会做这样的事情,直到你表现出一些尝试写下你自己的答案,但今天有人帮我一个忙,并且本着这种精神,我传递了善意。

import re

def read_file(filename, student):
    with open(filename, 'r') as thefile:
        lines = [x.strip().upper() for x in thefile.readlines()]
    if student[-1] != ':':
        student += ':'
    current_line = lines.index(student.upper()) + 1
    output = []
    while current_line < len(lines) and re.search('^\d+$', lines[current_line]):
        output.append(int(lines[current_line]))
        current_line += 1
    return output