You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取CSV的UUID构造路径时os.path.join报TypeError错误

问题解决方法

报错根因

csv.reader 迭代返回的每一行row是列表类型,对应CSV当前行的所有字段值。你当前代码直接将整行列表存入uuid列表,后续调用os.path.join时传入了列表类型的参数,不符合函数要求的字符串/路径类对象参数规则,因此抛出类型错误。
另外你的CSV每行第一个元素才是UUID值,第二个是空字段,需要显式取每行的第一个元素使用,同时注意要跳过CSV的表头行。

修正后代码(基础版)

import os
import csv

uuid_list = []
with open('C:/Users/Public/file.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    # 跳过表头行
    next(reader)
    for row in reader:
        # 取每行第一个元素即UUID,同时去除可能的空格、换行符
        uuid_val = row[0].strip()
        uuid_list.append(uuid_val)

for uuid in uuid_list:
    # os.path.join自动处理路径分隔符,无需手动添加斜杠
    filepath = os.path.join("org", "datasets", uuid, "data")
    print(filepath)

优化方案(按字段名取值更稳妥)

如果你的CSV表头固定,可使用csv.DictReader直接通过字段名取UUID,避免字段顺序变动带来的问题:

import os
import csv

uuid_list = []
with open('C:/Users/Public/file.csv', 'r', encoding='utf-8') as file:
    reader = csv.DictReader(file)
    for row in reader:
        # 直接通过表头字段名取UUID,逻辑更清晰
        uuid_val = row['uuid'].strip()
        uuid_list.append(uuid_val)

for uuid in uuid_list:
    filepath = os.path.join("org", "datasets", uuid, "data")
    print(filepath)

补充说明

  • 读取文件时指定encoding参数可避免中文/特殊字符乱码问题,可根据你的CSV实际编码调整为gbk等其他编码。
  • 路径拼接时直接将所有路径段作为参数传入os.path.join即可,函数会自动适配不同操作系统的路径分隔符,兼容性更好。

内容的提问来源于stack exchange,提问作者python_qt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:54:03