file.open()以一个无限循环结束



我对自己完成的在线作业有点怀疑。因此,任务要求我打开一个txt文件,并将所有字符设置为大写。

fh = open(f)
fhand=fh.read()
for line in fhand:
line=fhand.rstrip()
line=fhand.upper()
print(line)
break

这是我使用的代码。如果我不添加break语句,我将得到一个无限循环。有人能解释为什么会这样吗?

此时,将整个文件读取到fhand中,然后for循环迭代fhand中的每个字符,因为此时它是一个大字符串。

因此,对于输入中的每个字符,您最终都会打印整个输入(大写(。

你可能想做一些更像:

with open("file.txt") as file_in:
for line in file_in.readlines():
print(line.strip().upper())

感谢@bloueteeth指出这里实际上并不需要readlines(),这可以简化为:

with open("file.txt") as file_in:
for line in file_in:
print(line.strip().upper())

最新更新