在python中,读取和解析csv文件并逐行处理是很容易的:
reader = csv.reader(open("my_csv_file.csv"))
for row in reader:
# row is an array or dict
parsed_data = my_data_parser(row)
其中 my_data_parser 是我自己的一段逻辑,它接受输入数据,解析并执行逻辑。
如果我的解析器失败,我想记录csv文件的整个原始行,但似乎从csv阅读器我没有更多的访问它。
是否可以检索原始原始行数据?
4条答案
按热度按时间csga3l581#
csv.reader()
似乎没有公开它正在迭代的文件对象,但是,您可以使用读取器的line_num
属性来实现您想要的功能。举例来说:
备选
如果你想避免总是将文件加载到内存中,你可以保留最初的阅读文件的方式,只在发生错误时才将整个文件读取到内存中:
h79rfbju2#
作为reader.line_num的替代
zaqlnxep3#
您可以使用访问行行号
但是似乎没有直接的方法来访问实际的行(说是doc)。这里是迭代方法,避免在任何步骤中将整个文件读取到内存中:
(编辑:删除了其他解决方案,因为它们在其他PPL帖子中也可见)
unguejic4#
此解决方案不会将整个文件读入内存。
它在文件的每一个读取行调用csv reader。不确定性能: