Python中while条件调用readline()无读取内容输出的原因咨询
问题解答
你遇到的现象和Python IO内部机制、while语句的处理规则都没有关系,核心原因是你没有主动打印readline()方法的返回值:
- Python默认不会自动打印函数/方法的返回值,只有两种情况会输出返回值:一是你显式调用
print()函数输出,二是你在Python交互式解释器(REPL)的顶层提示符后直接执行表达式,此时解释器会自动打印表达式返回值。 - 你代码中把
f.readline()放在while的条件判断位置,程序只会读取返回值用来做不等于空字符串的逻辑比较,不会额外触发输出行为,所以你看不到读取到的行内容。
修正后的代码示例
你可以把读取到的行内容赋值给变量,在循环内部显式打印:
f = open("./foo.txt", "r") # 文件非空,包含多行文本 print(f.tell()) # 显式打印才能输出指针位置0 line = f.readline() while line != '': print(line, end='') # 显式打印读取到的行,end=''避免重复换行 line = f.readline() print(f.tell()) # 显式打印文件末尾指针位置 f.close() # 用完文件记得关闭
如果要保留你原来的写法结构,也可以在循环体里加打印,但需要额外处理指针位置,不如上面的写法直观。
内容的提问来源于stack exchange,提问作者UtterlyRocked
相关产品推荐
相关产品推荐

