Python实现遍历目录CSV文件并提取无后缀文件名的需求
解决方案
先帮你梳理下现有代码里的几个小问题,再给出实现两个需求的完整代码:
os.listdir(path)返回的是文件名,不是完整路径,直接传给pd.read_csv会找不到文件(除非你的脚本正好在csvfiles目录下)- 你代码里写了
table_list.append(file),但file变量根本没定义,应该是filename - 循环逻辑有误:你现在是把所有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
相关产品推荐
相关产品推荐

