为什么python中readline无法读取文件的第一行?
问题描述:
python中通过readline读取文件无法读取第一行,请大神解惑
代码如下:
os.getcwd()
os.chdir('D:\\AutoTest\\Automated_test_platform\\tests\\myscript\\results')
with open('poetry.txt', 'r', encoding='utf-8') as data:
for each_line in data:
print(data.readline(), end='')
文件内容:
关雎
[先秦] 诗经
关关雎鸠,在河之洲。
窈窕淑女,君子好逑。
参差荇菜,左右流之。
窈窕淑女,寤寐求之。
求之不得,寤寐思服。
悠哉悠哉,辗转反侧。
参差荇菜,左右采之。
窈窕淑女,琴瑟友之。
参差荇菜,左右芼之。
窈窕淑女,钟鼓乐之。
运行结果:
答
你都已经遍历each_line变量了,为什么还要输出data.readline(),直接pirnt(each_line)不行吗
for line in file:
# Todo
的意思是
while file文件未结束:
line = file.readline()
# Todo
所以你的代码就等价于
while data文件未结束:
each_line = data.readline()
print(data.readline())
我相信你能看出问题在哪。
其次,看输出结果麻烦仔细点,你这不仅仅是第一行没输出,整首诗就输出了一部分,再仔细看还能看出是一半,这时候应该已经能知道是哪方面问题了,仔细想想再问。
答
for eachline和data.readline()都有逐行往后移动data内文件指针的功能,重复移动最终结果是隔行输出,改成:
for each_line in data:
print( each_line, end='')
答
print(data.read())