Python新手求助:Jupyter Notebook手动上传CSV后代码无法运行
解决方法
1. 修复原代码的基础错误
你的代码存在两个直接导致运行失败的问题:
cols和data变量未提前初始化,直接调用会触发NameError- 未处理CSV中可能存在的空行,容易引发后续转换错误
修改后的代码如下:
import numpy as np import pickle import pandas as pd filename = "load.csv" cols = None # 初始化表头变量 data = [] # 初始化数据列表 with open(filename) as f: for line in f.readlines(): line = line.strip() # 替代replace("\n", ""),同时去除首尾空格 if not line: # 跳过空行 continue vals = line.split(",") if cols is None: cols = vals else: # 增加异常处理,避免非数值内容导致崩溃 try: data.append([float(x) for x in vals]) except ValueError as e: print(f"跳过无效行: {line}, 错误原因: {e}")
2. 确认文件路径正确性
手动上传到Jupyter Notebook后,需确保文件在当前工作目录:
- 运行
!pwd(Linux/macOS)或!cd(Windows)查看当前路径 - 或者执行
import os; print(os.listdir()),检查输出中是否有load.csv
如果文件不在当前目录,需填写完整路径,比如filename = "./upload/load.csv"(相对路径)或filename = "C:/Users/xxx/load.csv"(Windows绝对路径)。
3. 更简洁的推荐方案
既然已经导入了pandas,完全不需要手动解析CSV,一行代码就能完成读取:
import pandas as pd # 直接读取CSV为DataFrame df = pd.read_csv("load.csv") # 按需转换为列表格式 data = df.values.tolist() cols = df.columns.tolist()
这种方式会自动处理表头、空行、数据类型转换,比手动写循环更稳定高效。
内容的提问来源于stack exchange,提问作者Jaya Asiri Prem
相关产品推荐
相关产品推荐

