Python文件读取后逐字符垂直输出的异常问题求助
Python文件读取后逐字符垂直输出的异常问题求助
嘿,兄弟,我完全懂你刚学Python遇到这种小问题的困惑!别着急,咱们来一步步捋清楚。
首先,你遇到的核心问题是:为什么书上的代码运行后是整行输出Hello from Python!,但你的代码却把每个字符都拆开来逐行打印了?
咱们先看问题出在哪——你用了for line in my_file.read(),这里的my_file.read()会把文件里的所有内容一次性读取成一个完整的字符串(比如就是"Hello from Python!")。而当你遍历一个字符串的时候,Python会把它拆成一个一个单独的字符来迭代,每循环一次拿到一个字符,再用print()输出,而print()默认每次输出后都会加换行符,自然就变成每个字符占一行了。
那怎么改成和书上一样的整行输出呢?给你几个简单的解决办法:
方法1:直接遍历文件对象(最推荐的方式)
文件对象本身就是可迭代的,每次迭代会自动读取一行内容,这样就不会拆成字符了:with open("my_file.txt", "r") as my_file: for line in my_file: print(line, end='') # 加end=''是因为文件里的行末尾本身带有换行符,print默认会再加一个,会多空行方法2:直接打印整个文件内容
如果不需要逐行处理,直接一次性读取并打印就行,简单粗暴:with open("my_file.txt", "r") as my_file: print(my_file.read())方法3:用readlines()读取所有行
这个方法会把文件的每一行存成列表里的元素,遍历这个列表就能拿到每行内容:with open("my_file.txt", "r") as my_file: for line in my_file.readlines(): print(line, end='')
另外,可能书上的代码是不是有点小笔误?毕竟for line in my_file.read()这种写法本身就是会逐字符迭代的,大概率是排版或者印刷的时候出错了,应该是for line in my_file才对~
慢慢摸清楚文件操作的逻辑就好了,刚开始学都是这样的,加油!
备注:内容来源于stack exchange,提问作者Anthony Ezenwaka
相关产品推荐
相关产品推荐

