关于readline
首先这是文本的内容从明天起,做一个幸福的人
喂马,劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海春暖花开
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你幸福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
:w
a=open(r"C:\Users\86139\Desktop\爪巴虫\something.txt",encoding='utf-8')
#打开这个文本
for i in a:
print(i)
这段代码能打出文本的每一行
然而如果我用readline的话就只能打出一半的内容
a=open(r"C:\Users\86139\Desktop\爪巴虫\something.txt",encoding='utf-8')
#打开这个文本
for i in a:
print(a.readline())
a.close()
喂马,劈柴,周游世界
我有一所房子,面朝大海春暖花开
从明天起,和每一个亲人通信
那幸福的闪电告诉我的
陌生人,我也为你幸福
愿你有情人终成眷属
我只愿面朝大海,春暖花开
:w
这是为啥啊,readline 不也是读取每一行吗 本帖最后由 沐羽尘 于 2020-8-6 12:24 编辑
emmmm 那个 你也知道readline是读取一行
所以呢 当你for i in a:的时候
实际上可以想象是把指针指到了第一行 “从明天起,做一个幸福的人”
然后你a.readline()的时候
实际上把指针指向第二行“喂马,劈柴,周游世界” 并print出来
然后呢再执行for i in a:又指向第三行“从明天起,关心粮食和蔬菜”
接着a.readline()指向第四行“我有一所房子,面朝大海春暖花开”并显示出来
剩下的就不用我说了吧
所以呢 可以用
while True:
print(a.readline())就行了 不过其实用指针这个说法好像也不太恰当 不过意思是差不多的{:10_250:}
因为 for 循环直接循环文件对象时候就是以文件内容的一行一行读取的
所以你 for i in a: 这个过程就是在读取文件中的一行,此时文件指针会移动倒下一行的开头
当你在 for 寻内重新对文件对象读取一行,此时就是在 for 循环移动文件指针后继续读取一行
也就是你 for 循环已经读取一行了,而你 readline 还继续读取一行,且只打印第二次读取的内容,所以会导致只打印出一半的内容
for i in a:
print(a.readline())在 for i in a 时,首先会读取一行,赋值给 i,但是你并没有打印。
在 a.readline() 时,又读取了一行,这一行打印出来了。
所以,奇数行都被忽略了。 沐羽尘 发表于 2020-8-6 00:15
emmmm 那个 你也知道readline是读取一行
所以呢 当你的时候
实际上可以想象是把指针指到了第一行 “从明 ...
(实际上直接a.readline()就可以了,不用print)非交互式不会自动打印结果。 永恒的蓝色梦想 发表于 2020-8-6 08:57
非交互式不会自动打印结果。
是吗?太久没学可能有点忘了{:10_266:}
谢谢噢
页:
[1]