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大小的文件是什么?当一个人处于单元测试阶段时,这些问题就不会发生,但是当代码失控时,谁知道会发生什么呢。