Python:enumerate结合readline读取文件为何未得到预期行?
为什么这段Python代码读不到CSV的第一行?
你的Python代码:
myfile = open("test-file.csv", "r") for k, line in enumerate(myfile,0): if k == 0: myline = myfile.readline() print(myline) break myfile.close()
test-file.csv内容:
0. Zeroth 1. First 2. Second 3. Third
实际输出:
1. First
预期输出:
0. Zeroth
问题出在文件指针的移动逻辑上:
- 用
for k, line in enumerate(myfile, 0)遍历文件对象时,每一次循环都会自动读取文件的下一行。第一次循环(k=0)时,line变量已经拿到了第一行内容0. Zeroth。 - 但你紧接着调用
myfile.readline(),会让文件指针再往下移动一行,读取到第二行的1. First,最后打印的就是这一行。 - 随后
break跳出循环,自然拿不到预期的第一行。
修正方法:
直接打印已经拿到的line即可,不需要额外调用readline():
myfile = open("test-file.csv", "r") for k, line in enumerate(myfile, 0): if k == 0: print(line) break myfile.close()
或者更简洁的写法(直接读取第一行,还能自动关闭文件):
with open("test-file.csv", "r") as myfile: print(myfile.readline())
内容的提问来源于stack exchange,提问作者mike65535
相关产品推荐
相关产品推荐

