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

Python实现遍历目录CSV文件并提取无后缀文件名的需求

解决方案

先帮你梳理下现有代码里的几个小问题,再给出实现两个需求的完整代码:

  1. os.listdir(path) 返回的是文件名,不是完整路径,直接传给 pd.read_csv 会找不到文件(除非你的脚本正好在csvfiles目录下)
  2. 你代码里写了 table_list.append(file),但 file 变量根本没定义,应该是 filename
  3. 循环逻辑有误:你现在是把所有csv文件名存到列表后一次性传给 read_csv,但 read_csv 只能读取单个文件,正确做法是在循环里逐个处理每个文件

接下来是实现两个需求的完整代码:

import os
import pandas as pd

# 注意:Windows路径建议用原始字符串(加r前缀)或者双斜杠,避免转义字符问题
path = r'\test\test\csvfiles'
# 初始化存储去掉后缀的文件名的列表
new_table_list = []

# 遍历目录下的所有文件
for filename in os.listdir(path):
    # 只处理.csv结尾的文件
    if filename.endswith('.csv'):
        # 1. 获取文件的完整路径(避免找不到文件的问题)
        full_file_path = os.path.join(path, filename)
        # 2. 去掉文件后缀,存入new_table_list
        table_name = os.path.splitext(filename)[0]
        new_table_list.append(table_name)
        
        # 3. 读取当前文件并执行数据分析逻辑
        # 这里假设col是你已经定义好的列名列表
        data = pd.read_csv(full_file_path, sep="|", names=col)
        
        # --------------------------
        # 在这里写你的后续pandas数据分析逻辑
        # 比如:print(data.head())、数据清洗、统计分析等
        # --------------------------
        print(f"正在处理文件:{filename},对应的表名:{table_name}")
        # 示例分析:输出数据基本信息
        print(data.info())

# 最后可以查看存储的表名列表
print("所有处理完成的表名:", new_table_list)

关键细节说明:

  • 获取完整路径:用 os.path.join(path, filename) 拼接路径,不管是Windows还是Linux系统都能正常工作,避免路径格式错误。
  • 去掉文件后缀:用 os.path.splitext(filename)[0] 比直接用 filename[:-4] 更可靠,它会自动识别并去掉最后的后缀,比如处理 data.v2.csv 时会得到 data.v2,不会出现截断错误。
  • 循环处理逻辑:每个csv文件单独读取和分析,确保每个文件的数据分析逻辑都能被执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:44:42