Python 如何使用while循环在文本文件上循环?

Python 如何使用while循环在文本文件上循环?,python,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) 它将显示如下列表:

如果我有一个文本文件,如:

     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循环?

我不确定您为什么要使用
while
阅读,而
for loop
就可以了。但这里有一个python方式来读取文件

with open(...) as f:
    for line in f:
        <do something with line>
打开(…)作为f的
:
对于f中的行:

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

我不确定为什么要使用
读取,而
for loop
就可以了。但这里有一个python方式来读取文件

with open(...) as f:
    for line in f:
        <do something with line>
打开(…)作为f的
:
对于f中的行:

with
语句处理打开和关闭文件,包括在内部块中引发异常时。f
中的
行将文件对象
f
视为一个iterable,它自动使用缓冲IO和内存管理,因此您不必担心大文件。

请记住,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
重新导入
def read_文件(文件名,学生):
以open(filename,'r')作为文件:
lines=[x.strip().upper(),用于文件中的x.readlines()]
如果学生[-1]!=':':
学生+=':'
当前行=行.索引(student.upper())+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
重新导入
def read_文件(文件名,学生):
以open(filename,'r')作为文件:
lines=[x.strip().upper(),用于文件中的x.readlines()]
如果学生[-1]!=':':
学生+=':'
当前行=行.索引(student.upper())+1
输出=[]
当当前行
为什么需要专门使用
while
循环?为什么需要专门使用
while
循环?在这种情况下,使用
while
循环是有意义的。OP只想读取文件的一部分。您可以在
while
循环中执行
操作,而不是将
中断插入
for
循环中。(尽管,这两种方法都有点混乱)如果您试图只读取文件的一部分,则需要使用
break
哪种方法。这是无法逃避的。但大多数人在试图读取文件时错过的是——文件不存在的是什么?那个1GB大小的文件是什么?当一个人处于单元测试阶段时,这些问题不会发生,但是当代码失控时,谁知道会发生什么。在这种情况下,
while
循环是有意义的。OP只想读取文件的一部分。您可以在
while
循环中执行
操作,而不是将
中断插入
for
循环中。(尽管,这两种方法都有点混乱)如果您试图只读取文件的一部分,则需要使用
break
哪种方法。这是无法逃避的。但大多数人在试图读取文件时错过的是——文件不存在的是什么?那个1GB大小的文件是什么?当一个人处于单元测试阶段时,这些问题就不会发生,但是当代码失控时,谁知道会发生什么呢。