如何使用Python的io.open读取文件时跳过首行(表头)?
解决方法:先跳过CSV表头再循环读取内容
当然可行!你的思路完全没问题,之所以csus.readline()没达到预期,大概率是调用时机不对。下面给你两种靠谱的实现方式:
方法1:使用readline()提前跳过表头
只需要在进入for循环之前,先调用一次readline()读取并丢弃第一行(表头),之后文件指针会自动定位到第二行,后续的for循环就会从数据行开始读取了:
import io with io.open('csus.csv', mode='r', encoding='latin1') as csus: # 读取并跳过第一行表头 csus.readline() # 从第二行开始循环处理数据 for line in csus: # 这里写你的数据处理逻辑,比如打印处理后的行 print(line.strip())
方法2:用next()函数(更Pythonic的方式)
因为文件对象本身就是迭代器,调用next()可以直接获取迭代器的下一个元素(也就是第一行表头),之后的for循环会从剩余的行开始迭代,这种写法更符合Python的迭代器思维:
import io with io.open('csus.csv', mode='r', encoding='latin1') as csus: # 跳过表头 next(csus) for line in csus: # 处理每一行数据 print(line.strip())
额外提示:处理空文件的情况
如果你的CSV文件有可能是空的,直接调用next()会抛出StopIteration异常,这时候可以给next()传一个默认值,避免报错:
import io with io.open('csus.csv', mode='r', encoding='latin1') as csus: # 跳过表头,空文件时返回None,不会报错 next(csus, None) for line in csus: print(line.strip())
两种方法都能完美实现你想要的“先跳过首行再循环”的需求,个人更推荐next()的写法,简洁又直观~
内容的提问来源于stack exchange,提问作者dr jerry
相关产品推荐
相关产品推荐

