Python中函数内读取CSV仅输出首行,函数外正常的问题咨询
问题分析与解决方法
你的函数只输出第一行的核心原因是:return line写在了for循环内部。当第一次循环拿到第一行数据时,return会直接终止函数并返回这一行,循环后续的迭代完全没机会执行,所以只能得到第一行结果。
而把代码移出函数后,没有return语句打断循环,for循环会完整遍历CSV文件的每一行,自然能正常输出所有内容。
几种修正方案:
方案1:收集所有行后一次性返回
适合需要拿到所有数据进行后续处理的场景:
import csv # 注意要先导入csv模块 def reader(x): with open(x,'r') as f: csv_reader = csv.reader(f) all_lines = [] for line in csv_reader: all_lines.append(line) return all_lines print(reader('scores.csv'))
方案2:在循环内直接打印
如果只是需要打印所有行,不需要返回数据,可以直接在循环里输出:
import csv def reader(x): with open(x,'r') as f: csv_reader = csv.reader(f) for line in csv_reader: print(line) reader('scores.csv')
方案3:用生成器逐行返回(适合大文件)
不想一次性加载所有内容到内存时,用yield把函数变成生成器,调用时逐行获取:
import csv def reader(x): with open(x,'r') as f: csv_reader = csv.reader(f) for line in csv_reader: yield line # 遍历生成器打印每一行 for row in reader('scores.csv'): print(row)
内容的提问来源于stack exchange,提问作者pouyan
相关产品推荐
相关产品推荐

