求助:无法给读取CSV生成二维列表的函数传入文件名参数
解决CSV读取函数无法传入文件名参数的问题
1. 先确认函数定义是否正确接收参数
这是最常见的问题——函数根本没写接收文件名的参数,自然传不进去。
错误写法:
def read_file(): # 硬编码了文件名,根本没留参数入口 with open("test.csv", 'r') as f: pass
正确写法:把文件名作为参数定义在函数里:
def read_file(filename): # 用传入的filename参数打开文件 with open(filename, 'r', encoding='utf-8') as f: pass
2. 检查调用函数时的传参是否正确
别犯“定义了参数但调用时不传”的错误:
错误调用:
# 没传文件名,直接调用 data = read_file()
正确调用:传入具体的文件名(支持相对/绝对路径):
# 当前目录下的文件 data1 = read_file("students.csv") # 子目录里的文件 data2 = read_file("./data/scores.csv") # 绝对路径 data3 = read_file("C:/Users/xxx/Documents/teachers.csv")
3. 提前排查文件路径问题
如果传参后报FileNotFoundError,大概率是路径不对:
- 先确认文件名拼写(注意Linux/macOS大小写敏感)
- 用
os.getcwd()查看脚本当前运行的目录,确认文件是否在这个目录里:
import os print(os.getcwd()) # 输出当前工作目录
4. 完整可运行的示例代码
结合CSV命名列表的需求,给一个完整实现:
import csv def read_file(filename): """读取CSV并返回命名的二维列表(每行是一个字典)""" named_rows = [] try: with open(filename, 'r', encoding='utf-8') as csv_file: # DictReader会自动用表头作为键,生成字典行 reader = csv.DictReader(csv_file) named_rows = list(reader) return named_rows except FileNotFoundError: print(f"错误: 文件 {filename} 不存在") return None except Exception as e: print(f"读取出错: {str(e)}") return None # 调用示例 student_data = read_file("students.csv") if student_data: print("第一行学生数据:", student_data[0]) score_data = read_file("scores.csv") if score_data: print("第一行分数数据:", score_data[0])
内容的提问来源于stack exchange,提问作者Zrocks2000
相关产品推荐
相关产品推荐

